dmi*_*aev 12 cocoa copy objective-c automatic-ref-counting
正如我所假设的,这应该适用于ARC下的不可变对象:
- (id) copyWithZone:(NSZone *)zone {
return self;
}
Run Code Online (Sandbox Code Playgroud)
但如果我需要深层复制,我应该写这样的东西:
- (id) copyWithZone:(NSZone *)zone {
Immutable *copy = [[Immutable alloc] initWithStr:str];
return copy;
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我认为是正确的,ARC会理解情况(1)和(2)并做出关于"+1"的正确决定.
我对吗 ?
dmi*_*aev 12
似乎我是对的:我找不到任何关于主题的具体文档,但是我在关闭ARC的情况下创建单独的测试项目,然后选择迁移到ARC.这是没有ARC的代码:
- (id) copyWithZone:(NSZone *)zone {
return [self retain];
}
Run Code Online (Sandbox Code Playgroud)
这是我迁移后得到的:
- (id) copyWithZone:(NSZone *)zone {
return self;
}
Run Code Online (Sandbox Code Playgroud)
ARC有时会起作用,但似乎我们应该相信它会很好地完成它的工作.:-)
| 归档时间: |
|
| 查看次数: |
3438 次 |
| 最近记录: |