【发布时间】:2014-03-15 03:42:40
【问题描述】:
我在 2012 年年中开始使用 Objective-C 语言进行编程,当时 ARC 取代了 MRC 作为一种通用实践,几乎不需要学习后者。
现在我正在尝试了解 MRC 的一些基础知识,以加深我对 Objective-C 内存管理的了解。
我现在感兴趣的是,如何手动为声明的@properties 写getters/setters。
到目前为止,我发现的唯一合理示例来自 Apple 的“高级内存管理编程指南”:
@interface Counter : NSObject {
NSNumber *_count;
}
@property (nonatomic, retain) NSNumber *count;
@end;
- (NSNumber *)count {
return _count;
}
- (void)setCount:(NSNumber *)newCount {
[newCount retain];
[_count release];
_count = newCount;
}
我的猜测是,为(非原子,复制)做同样的事情,我应该写这样的东西:
- (NSNumber *)count {
return _count;
}
- (void)setCount:(NSNumber *)newCount {
[_count release];
_count = [newCount copy];
}
所以问题是关于我不确定的其余组合:
如果有人可以向我展示在使用手动引用计数 (MRC) 的情况下应如何为以下 @property 声明编写显式 getter/setter 示例,我将不胜感激:
1. @property (nonatomic, retain) NSNumber *count;
2. @property (nonatomic, copy) NSNumber *count;
3. @property (atomic, retain) NSNumber *count;
4. @property (assign) NSNumber *count;
5. What else is used often under MRC? (please share, if any other combinations exist)
【问题讨论】:
标签: objective-c memory-management