我知道在類的方法中分配值的正確約定是不使用setter版本。在初始化方法中使用setters(objective-c)
假設你有一個init方法是這樣的:
// Class header
@property (nonatomic, weak) id <DelegateType> delegate;
@property (nonatomic, strong) NSString *stringData;
@synthesize delegate = _delegate;
@synthesize stringData = _stringData;
- (id)initWithParams:(NSString *)aString delegate:(id<DelegateType>)aDelegate
{
// initialization happens here
}
弧前,你會確保正確的保留政策,:
stringData = [aString retain];
self.delegate = aDelegate;
弧,會怎麼做分配,並保證那個ivars不會太早發佈?
因爲你不知道什麼樣的工作,也許發生在一個setter覆蓋的情況下,在幕後,我的印象是,你不能做的:
self.stringData = aString
什麼是正確的初始模式?
忘記的合成需要注意的是有存取。問題已更新。 – 2012-08-17 17:46:22
在init或dealloc中使用訪問器的問題是它們可能具有副作用或假定不包含在部分(de)構造對象中的不變量。蘋果[明確表示不](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmPractical.html),所以如果你使用他們生成的訪問器,你應該大概遵循他們的建議。 – Chuck 2012-08-17 20:30:33