例:
- (ID)initWithCoder:(NSCoder *)aDecoder{ self = [super initWithCoder:aDecoder]; if (self){ // code here } return self;}
我想要了解的是这是如何替代initWithNibname的?
目前正在学习ios的大书呆子牧场书,这本书是为ios6和之前版本的xode编写的,并试验了coreLocation框架.
在下面的代码中,我已经替换了initWithNibname.我也在早期的教程中使用相同的初始化程序完成了这项工作,但如果我不完全理解一章,我就无法继续学习教程.苹果文档并不总是有意义的.通常,stackoverflow答案和重新阅读的组合有助于事物陷入困境.
- (ID)initWithCoder:(NSCoder *)aDecoder{ self = [super initWithCoder:aDecoder]; if (self){ //create location manager object locationManager = [[CLLocationManager alloc] init]; //there will be a warning from this line of code [locationManager setDelegate:self]; //and we want it to be as accurate as possible //regardless of how much time/power it takes [locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; //tell our manager to start looking for it location immediately [locationManager startUpdatingLocation]; } return self;}
上面的代码是做什么的?它看起来像一个指定的初始值设定项,但参数的名称和返回类型让我感到困惑.欣赏会在这里有所帮助.
亲切的问候
更新:
从我在XCode 5中收集的内容中鼓励使用故事板,我没有看到不使用故事板的选项.我正在阅读本书的教程是使用XCode 4.3,其中可以使用nib.
解决方法 NSCoding https://developer.apple.com/library/mac/documentation/cocoa/reference/foundation/Protocols/NSCoding_Protocol/Reference/Reference.html为了理解此方法对于来自笔尖(或故事板)的视图控制器的影响,您必须了解NSCoding.
使用NSCoding取消归档对象时,您将获得它拥有的所有对象的级联效果. initWithCoder:被发送到一个对象,它被解冻,然后被发送到它拥有的对象等.
这是nib加载系统用于解冻您在界面构建器中创建的所有对象的内容.
以下是nib加载系统所做的快速概述(来自文档)
> nib文件和引用的资源被加载到内存中
>在nib中创建的对象图是未归档的(NSCoding)这实际上取决于对象的类型. UIVIEws被发送到initWithFrame,UIVIEwControllers被发送到initWithcoder,因为它们符合NSCoding,所有其他对象都只是发送init.
>使用setValue:forKey:和setTarget:action:分别建立所有出口和 *** 作连接(您的IBOUtlets和IBActions).
>然后将awakeFromNib发送到nib中的所有对象
在此处查看对象加载过程部分下的更多详细信息.
https://developer.apple.com/library/ios/documentation/cocoa/conceptual/LoadingResources/CocoaNibs/CocoaNibs.html
关键是当使用nib或storyboard时,将从vIEwController调用initWithCoder,因为这是系统解冻对象图的方式,以及您在界面构建器中对这些对象设置的属性.
还要记住,故事板只是一组nib文件,其中包含一些描述它们相关性的元数据.
总结以上是内存溢出为你收集整理的objective-c – 我是否正确地说initWithNibName:bundle用于手动加载nib文件,initWithCoder将用作替代?全部内容,希望文章能够帮你解决objective-c – 我是否正确地说initWithNibName:bundle用于手动加载nib文件,initWithCoder将用作替代?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)