【发布时间】:2012-12-06 11:36:31
【问题描述】:
我对以下短语中的“否则”和“只要”用法感到困惑;
否则 ARC 不会强制执行 Objective-C 类型系统,只要 实现方法遵循静态类型的签名。 如果 ARC 暴露给一个无效的指针,这是未定义的行为。
对于 ARC 而言,有效的对象是具有“良好行为”的对象 保留操作。具体来说,对象必须这样布置 Objective-C 消息发送机器可以成功发送它 以下消息:
- 保留,不带参数并返回指向对象的指针。
- 发布,不接受任何参数并返回 void。
- 自动释放,不带参数并返回指向对象的指针。
http://clang.llvm.org/docs/AutomaticReferenceCounting.html
我们可以推断出以下内容吗?
...(忘记其他情况)...如果实现方法遵循静态类型的签名,ARC 将强制执行 Objective-C 类型系统。
它是在谈论retain、release、autorelease方法的签名吗?如果有,是否有否定意义;
如果实现方法遵循静态类型的签名,ARC 将_不_强制执行 Objective-C 类型系统。
【问题讨论】:
标签: objective-c automatic-ref-counting