【发布时间】:2014-03-23 23:36:55
【问题描述】:
我有一些初次见面的问题:
1) 使用@propreties 和@synthesize 时,需要在dealloc 方法中做些什么吗?还是没有必要? (如发布或其他)
2) 我有类似的东西:
@property (copy, nonatomic) NSString *model; // On prend une copie pour le setter
@property (getter=getDistance, nonatomic) float odometer;
// constructeur doit toujours commencer par init
-(id)initWithModel:(NSString *)newModel {
if(self = [super init]) {
_model = [newModel copy];
_odometer = 10.0;
}
return self;
}
我可以这样做吗:
self.model = [newModel copy];
self.odometer = 10.0;
这里有什么区别?
3) 为什么对于 NSString*,我们使用复制属性?
@property(**copy**) && _variable = [newVariable **copy**] ..
4) 对于一个简单的应用程序(非多线程),我们可以使用非原子以获得最佳性能吗?
提前致谢
【问题讨论】:
-
由于已经将模型属性设置为“copy”类型,所以不需要[newModel copy]。您可以直接执行 self.mode = newModel。您不必“必须”“复制”NSString。您这样做是因为通常您不需要在程序中不会更改的字符串的副本。为 NSString 选择保留副本实际上取决于程序如何工作。你应该阅读 Apple 的内存管理指南,因为它很好地解释了这一切。
标签: ios objective-c