Objective-C iOS开发在设置变量时使用viewDidLoad或initWithCoder以及为什么?

use*_*415 3 iphone objective-c iboutlet ios initwithcoder

所以看起来我应该设置我的成员变量viewDidLoad- 但我很困惑为什么设置这些变量initWithCoder失败,因为两者都在程序的开头被调用.

特别是我有一行代码:

[worldView setMapType:MKMapTypeSatellite];
Run Code Online (Sandbox Code Playgroud)

其中worldView是一个IBOutlet MKMapView对象.它工作viewDidLoad,但不是initWithCoder.

Mar*_*n R 5

initWithCoder调用时,插座尚未连接.从文档:

在实例化过程中,归档中的每个对象都是未归档的,然后使用适合其类型的方法进行初始化.符合的对象NSCoding协议(包括的所有子类UIViewUIViewController)使用的是他们初始化 initWithCoder:方法.
...
在实例化并初始化所有对象之后,nib加载代码将重新建立所有这些对象的插座和操作连接.然后它调用awakeFromNib对象的方法.

因此 awakeFromNib,您可以选择自定义UI元素的位置.