我有以下簡單的類:可以從getter返回財產的副本嗎?
@interface Article: NSObject {
NSString *title;
}
@property (copy, nonatomic) NSString *title;
@end
@implementation
- (void)setTitle:(NSString *)aString {
if ((!title && !aString) || (title && aString && [title isEqualToString:aString])) return;
dirty = YES;
[title release];
title = [aString copy];
}
- (NSString *)title {
return title;
}
@end
在我的應用程序必須做很多事情就像
Article *article= [objectsArray getObjectAtIndex:x]; NSString *title=article.title; UILabel.text=title; [title release];
我知道我應該打電話時,我得到保留物業:
NSString *title=[article.title retain];
也許我懶得做一個保留,其中我g等等。或者如果我需要在整個應用程序中做幾十次。
我可以讓吸氣劑返回副本嗎?
- (NSString *)title {
return [title copy];
}
我不同意,最好是返回一個不可變的引用(特別是在庫中),所以只有需要mutate的客戶才需要支付複製的費用。在某些情況下,始終複製的開銷可能會過高。 – notnoop 2009-07-16 15:50:20