- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直都知道这种模式是管理 NSError**
参数(特别是 BOOL
返回值和 NSError* __autoreleasing *
参数:
-(BOOL)doSomethingWithString:(NSString*)string error:(NSError* __autoreleasing *)error {
if(![string length]) {
*error = [NSError blah blah];
return NO;
}
return YES;
}
要使用此方法,请遵循以下模式:
NSError* error = nil;
if([self doSomethingWithString:@"" error:&error]) {
//great success!!
} else {
//log error
}
现在好像把__autoreleasing
换成了_Nullable
?
我正在从官方 Apple 文档中查看此方法:https://developer.apple.com/reference/foundation/nsfilemanager/1415371-createdirectoryaturl?language=objc
那么,我是否可以简单地将我所有的 __autoreleasing
替换为 _Nullable
并且在这种情况下一切都很好?如果不是,管理 NSError**
参数的新模式是什么?
最佳答案
不,这是两个不同的东西。
__autoreleasing
为ARC指定了变量模式,因此它可以正确地推断出如何读写它。
可空性指定...以及参数是否可以为 nil
。
我认为造成混淆的原因是 Clang 自动假定 __autoreleasing
用于间接参数 ( http://clang.llvm.org/docs/AutomaticReferenceCounting.html#indirect-parameters ),所以有些人只是忽略了它。如果我没记错的话,情况并非总是如此。
否则你会得到 * __autoreleasing _Nullable *
。但明确一点也不是坏事!
关于objective-c - NSError __autoreleasing 与 _Nullable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37995354/
我在返回错误的 Apple 函数中注意到了这种模式 error:(NSError *__autoreleasing *)outError 我理解它的意思,它是指向指针的指针,用于执行结果(仅使用 *
在 AFNetworking 中我找到了这个函数: - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request
我有一个街区; typedef void (^SIResponseHandler) (id obj, NSString *error); 和方法: + (void)uploadPhoto:(UIIma
如何使变量的地址成为 NSObject 中的强属性?我有一个名为 SCPFMessageThreadQuery 的类,它是通过传递 SCPFMessageThread 变量的地址来分配初始化的。 @i
所以我像往常一样将一个指向 NSError 对象的指针传递给一个方法。它曾经很简单: -(BOOL)foo:(NSString *)string error:(NSError **)error 但是对
我拼命想了解 __autoreleasing 关键字在 Objective-C 中的用法。我已仔细阅读以下问题的答案: In which situations do we need to write
根据 Transitioning to ARC Release Notes : __autoreleasing is used to denote arguments that are passed
有人可以向我解释在以下示例代码块中使用 __autoreleasing 的目的吗? - (void)execute:(NSError * __autoreleasing *)error { /
我一直都知道这种模式是管理 NSError** 参数(特别是 BOOL 返回值和 NSError* __autoreleasing * 参数: -(BOOL)doSomethingWithString
我正在尝试将旧的非 ARC 项目转换为 ARC,但出现此编译错误:“无法在 block 中捕获 __autoreleasing 变量” - (void)animateViewController:(_
-(NSData *)jsonRepresentation:(NSError **error)error { NSDictionary *dict = [self getDictRepresen
考虑这段代码: @implementation MyClass -(void)dealloc { NSLog(@"MyClass dealloc: %@", self); } @end @im
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: In which situations do we need to write the __autorele
根据 Cocoa 的“创建规则”,返回新实例化对象的方法必须以 new、create 或 copy 开头,如果所有权转移给调用者。 假设我有一个实现名为 (NSObject *)getCorrectO
在学习 NSInvocations 时,我对内存管理的理解似乎存在差距。 这是一个示例项目: @interface DoNothing : NSObject @property (nonatomic,
我正在尝试完成这个谜题。 __strong 是所有 Objective-C 可保留对象指针(如 NSObject、NSString 等)的默认值。它是一个强引用。 ARC 在作用域末尾用 -relea
为什么 Apple 的方法没有将 NSError** 声明为 NSError * __autoreleasing * ? Transitioning to ARC Release Notes似乎暗示他
我正在尝试从 id __autoreleasing * 转换为 CFTypeRef * (void **)。 我试过: id __autoreleasing *arg = [OCMArg setTo:
在 ARC 下,输出参数采用以下形式(默认情况下;这等同于 NSError **): - (BOOL)tryWithError:(NSError *__autoreleasing *)err; 来自T
我正在尝试使用 PowerPlot 库绘制条形图。因此,我发现只有这个代码可以满足我对负条以及阴影或不透明度的要求。原始示例项目不使用 ARC。但是我的项目使用 ARC。在复制相同的代码时,我在编译项
我是一名优秀的程序员,十分优秀!