【发布时间】:2013-05-11 02:07:26
【问题描述】:
为什么 ARC 不能使用常规版本?
例子:
[weakObject doSomething];
据我了解,ARC 将其变为:
Object *strongObject = objc_autorelease(objc_loadWeakRetained(weakObject));
[strongObject doSomething];
为什么 ARC 不这样做呢?:
Object *strongObject = objc_loadWeakRetained(weakObject);
[strongObject doSomething];
objc_release(strongObject);
我想尽可能多地取消 ARC 中的自动发布。我用 GCD 做了很多异步线程,最终不得不添加很多自动释放池:
dispatch_async(self.myQueue, ^{
@autoreleasepool{
[weakObject doSomethingBig];
}
});
【问题讨论】:
-
基本上缺乏足够智能的编译器。可能值得一个错误报告,尽管它可能已经提交并且肯定是已知的。
-
你从哪里得到weakObject?
标签: objective-c automatic-ref-counting