本段文字摘翻自《Cocoa Design Patterns》,个人认为是一本好书。
编写类的初始化函数时,需要注意以下五点:
1. 确保类的Designated Initializer中,调用了父类的Designated Initializer函数。
2. 父类的Designated Initializer函数的返回值保存在变量self中。
3. 第2步结束后,如果self的值为nil,不可继续初始化操作。
4. 确保子类覆写(override)了父类的Designated Initializer函数。
5. 确保类里的每个非Designated Initializer的初始化函数都会调用Designated Initializer。
如第4点所要求,子类继承父类时,须知道父类的Designated Initializer函数。
下面列出常被继承的Cocoa类的Designated Initializer函数。
Class | Designated Initializer |
---|---|
NSObject | -init |
NSView | -initWithFrame: |
NSCell | -initImageCell: & -initTextCell: |
NSControl | -initWithFrame: |
NSDocument | -init |
NSWindowController | -initWithWindow: |