所以我正在做通常的事情,我将一个指向 NSError 对象的指针传递给一个方法。以前很简单:
-(BOOL)foo:(NSString *)string error:(NSError **)error
但现在有了 ARC:
-(BOOL)foo:(NSString *)string error:(NSError *__autoreleasing *)error
所以如果我有一个变量:
NSError *error = nil;
并尝试:
[foo:@"a string" error:&error];
我收到错误:
Sending 'NSError const __strong*' to parameter of type 'NSError *__autoreleasing*' changes retain/release properties of pointer.
没关系,尽管我的印象是编译器会为您处理这个问题。所以我犯了错误:
__autoreleasing NSError *error = nil;
我收到警告:
Sending 'NSError *__autoreleasing const *' to parameter of type 'NSError *__autoreleasing*' discards qualifier
所以我真正的问题是为什么我的 NSError 是一个常量?我的下一个问题是如何解决这个问题?这是一个非常基本的情况,现在有了 ARC,我只是不确定如何处理这个问题。