Look for any podcast host, guest or anyone
Showing episodes and shows of

NSCoder Chicago

Shows

NSCoder Chicago2026-02-051h 11NSCoder Chicago2026-01-291h 22NSCoder Chicago2026-01-2258 minNSCoder Chicago2026-01-151h 09NSCoder Chicago2026-01-081h 03NSCoder Chicago2026-01-021h 13NSCoder Chicago2025-12-251h 23NSCoder Chicago2025-12-181h 01NSCoder Chicago2025-12-121h 05NSCoder Chicago2025-12-041h 13NSCoder Chicago2025-11-271h 51NSCoder Chicago2025-11-071h 02Breaking Change2025-08-032h 16iOSDevLog
iOSDevLog399. nshipster-​NSCoding : NSKeyed​Archiverhttp://nshipster.cn/nscoding/NSCoding / NSKeyed​ArchiverMattt Thompson撰写、 Yu Jin翻译、 发布于2013年5月13日在构建应用程序时,一个重要的架构决策问题是在每次启动之间如何持久化数据。问题是如何精准的重现最后一次关闭应用前的状态;如何描述对象图以使下次完美地重新构建。在 iOS 和 OS X 上, 苹果提供了两种选择 :Core Data 或 NSKeyedArchiver / NSKeyedUnarchiver (用来将遵循 的类序列化)或者更确切地说:有三种选择,如果你算上NSURLCache的话. 在client-server应用场景下,在每次启动时加载必要的数据是一种可行的设计,尤其是结合磁盘缓存,存储服务器的响应,这样当发送对应请求的时候可以立即返回。在实践中,网络层和对象层上的缓存结合是可取的。当涉及到建模,查询,遍历,持久化复杂的对象图,那Core Data是无可代替的。Core Data 是把大锤子,但不是所有的问题都是足够大的钉子。Core Data 和 NSKeyedArchiver客观和常见的比较可能是这样的:Core Data NSKeyedArchiverEntity Modeling Yes NoQuerying Yes NoSpeed Fast SlowSerialization Format SQLite, XML, or NSData NSDataMigrations Automatic ManualUndo Manager Automatic Manual等等。在这场对决中,没有什么可比性,它看起来是一边倒的局势。...也就是说,直到你从一个稍微不同的角度看它:Core Data NSKeyedArchiverPersists State Yes YesPain in the Ass Yes No通过这些对比,在某些情况下NSKeyedArchiver是一个完全合理的选择。并非所有的应用程序需要查询的数据。并非所有的应用程序需要自动迁移。并非所有的应用程序处理大型或复杂的对象图。而且应用中确实是有一些模块更好地被一个简单的方案解决。这篇文章将关注如何,何时,为什么选择NSKeyedArchiver 和 NSCoding。希望能提供给亲爱的读者们以启发选择最合适的工具。NSCoding 是一个简单的协议,有两个方法: -initWithCoder: 和 encodeWithCoder:。遵循NSCoding协议的类可以被序列化和反序列化,这样可以归档到磁盘上或分发到网络上。举个例子:Objective-C@interface Book : NSObject @property NSString *title;@property NSString *author;@property NSUInteger pageCount;@property NSSet *categories;@property (getter = isAvailable) BOOL available;@end@implementation Book#pragma mark - NSCoding- (id)initWithCoder:(NSCoder *)decoder { self = [super init]; if (!self) { return nil; } self.title = [decoder decodeObjectForKey:@"title"]; self.author = [decoder decodeObjectForKey:@"author"]; self.pageCount = [decoder decodeIntegerForKey:@"pageCount"]; self.categories = [decoder decodeObjectForKey:@"categories"]; self.available = [decoder decodeBoolForKey:@"available"]; return self;}...
2016-03-1307 minMore Than Just Code podcast - iOS, visionOS  and Swift development, news and advice2016-02-131h 01Edge Cases2014-04-2737 minThe Record2014-02-2800 minBuild Phase2014-01-1540 min85% Cocoa2011-07-1700 minNSBrief2011-02-1253 min