objective-c - 为什么 Apple header 没有 NSError** 参数的 __autoreleasing?

标签 objective-c cocoa automatic-ref-counting out-parameters

为什么 Apple 的方法没有将 NSError** 声明为 NSError * __autoreleasing *

Transitioning to ARC Release Notes似乎暗示他们应该是(?)。

例如,NSFileManager.h 中的所有例程。但我实际上没有看到任何使用过渡到 ARC 发行说明中提到的内容的 Apple header :

and the method declaration would typically be:

-(BOOL)performOperationWithError:(NSError * __autoreleasing *)error;

可能是因为支持所有 NSError * error = nil; 声明都将暗示 strong 的遗留代码库,所以如果 Apple 将 __autoreleasing 在那里它会导致每次都创建一个临时的 __autoreleasing 局部变量?我唯一能想到的。

最佳答案

指向 Objective-C 对象的双指针是隐式的 __autoreleasing,由 LLVM spec 指定.

关于objective-c - 为什么 Apple header 没有 NSError** 参数的 __autoreleasing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14988157/

相关文章:

objective-c - 何时在 ARC 的对象引用上使用 __block 关键字

cocoa - 了解 NSPopover 与 ARC

ios - UILocalNotification 根本不起作用

objective-c - 为什么 DTrace 有时但不总是给我无效地址错误?

objective-c - 重复符号 _OBJC_METACLASS_$_ClassName

cocoa - 将 NSSet 作为 Core Data 中 NSManagedObject 的一部分

objective-c - Cocoa/Obj-C - 计算 XML 文件中的元素数量

iphone - Objective-C 中自定义对象的分组

swift 3 : Set Finder label color

ios - 整个 View Controller 中的多个 presentViewController 方法调用会导致 iOS 中的内存泄漏吗?