我正在閱讀關於編碼和解碼的內容,並且我注意到有時候人們會錯過保留,我也注意到保留有時用在一些可變參數上,而不是其他的。我可以問...在initWithCoder中使用retain?
(1)這種保留的目的是什麼?爲什麼有時候不需要?
(2)使用保留是否意味着我需要將它與發佈相匹配,並且如果是這樣的話?
- (id) initWithCoder: (NSCoder *) decoder {
name = [[decoder decodeObjectForKey: @"CardName"] retain];
email = [[decoder decodeObjectForKey: @"CardEmail"] retain];
}
或
- (id) initWithCoder: (NSCoder *) decoder {
name = [decoder decodeObjectForKey: @"CardName"];
email = [decoder decodeObjectForKey: @"CardEmail"];
}
加里
最有可能的是,您看到的沒有明確保留解碼對象的代碼示例使用setter方法聲明所有權。 – Chuck