设置变量和原因时使用viewDidLoad或initWithCoder进行Objective-C iOS开发



所以我似乎应该在viewDidLoad中设置我的成员变量,但我很困惑为什么在initWithCoder中设置这些变量失败,因为两者都是在程序开始时调用的。

特别是我有一行代码:

[worldView setMapType:MKMapTypeSatellite];

其中worldViewIBOutlet MKMapView对象。它可以在viewDidLoad下工作,但不能在initWithCoder下工作。

调用initWithCoder时,插座尚未连接。来自文件:

在实例化过程中,归档中的每个对象未进行初始化,然后使用与其类型相匹配的方法进行初始化。符合NSCoding协议的对象(包括所有UIViewUIViewController的子类)使用它们的CCD_ 12方法

在所有对象之后已经实例化和初始化,nib加载代码为所有这些重新建立出口和行动连接对象。然后它调用对象的awakeFromNib方法。

因此awakeFromNib将是一个适合自定义设置UI元素的地方。

调用initWithCoder时对象还不存在,调用viewDidLoad时对象存在。通过使用以下内容注销worldView的值来检查您的initWithCoder方法:

NSLog(@"World View: %@", worldView);

并且它将是CCD_ 19。它们将在调用viewDidLoad之前初始化,因此您可以在那里设置该IBOutlet的属性。

相关内容

  • 没有找到相关文章

最新更新