天天看點

Passing address of non-local object to __autoreleasing parameter for write-back

在希望通過函數的參數傳回Objective-C對象的時候,遇到了這個問題

錯誤代碼如下:

- (void)methodA:(NSString **)string<span style="white-space:pre">	</span>// 其實,這裡的參數實際類型是:(NSString * __autoreleasing * )string
{
    *string = XXX;
}
           

正确的用法是

- (void)methodA:(NSString * __strong *)string
{
    *string = XXX;
}
           

調用的時候:

NSString *strongString;
[object methodA:&strongString];
           

Ref:

1.

http://blog.csdn.net/chuanyituoku/article/details/17371807

我的這篇文章的最後部分:

Returning a Result as the Argument

有詳細介紹 (看過一遍、并且了解 其實是遠遠不夠的,要吃過苦頭才能記牢。。。)

2.

http://codego.net/402513/

繼續閱讀