【发布时间】:2012-11-02 06:51:09
【问题描述】:
现在我有一个ClassA : NSObject,然后在viewcontroller中viewDidLoad,看下面的代码:
- (void)viewDidLoad {
ClassA *a = [[ClassA alloc] init];
NSLog(@"a retainCount = %d", [a retainCount]);
ClassA *b = a;
NSLog(@"a retainCount = %d b retainCount= %d ", [a retainCount],[b retainCount]);
[a release];
NSLog(@"a retainCount = %d b retainCount= %d", [a retainCount],[b retainCount]);
[super viewDidLoad];
}
控制台输出如下:
2012-11-02 14:43:35.437 RetainCountTest[1043:207] a retainCount = 1
2012-11-02 14:43:35.439 RetainCountTest[1043:207] a retainCount = 1 b retainCount= 1
2012-11-02 14:43:35.439 RetainCountTest[1043:207] a retainCount = 1 b retainCount= 1
我不明白当我打电话给[a release]时,为什么是[a retainCount]== 1?
【问题讨论】:
-
谢谢! @mttrb,这非常有用。
-
面试官问retainCount?
-
@bbum 也许这是一个诡计问题,“你永远不应该发送
retainCount,尤其是发送给死对象”是正确的答案。 -
这正是我所希望的。如果面试官表现得很好,那么对并发或自动发布的跟进就会说明问题。 (而且我不一定会批评那些认为
retainCount有用的人——看到候选人在面对使其当前职位无效的信息时改变职位的意愿总是很有趣)。
标签: ios retaincount