所以我读过这个问题,这似乎正是我遇到的那种问题,但那篇文章中的答案并没有解决我的问题。我正在尝试编写NSMutableData
. 有问题的函数头如下所示:
-(void)readString:(__autoreleasing NSString **)str
我在函数中进行了一些数据操作,以获取与数据流中的下一个字符串相对应的特定字节,然后调用此行:
*str = [[NSString alloc] initWithData:strData encoding:NSUTF8StringEncoding];
此代码中没有错误。但是当我尝试像这样调用函数时:
+(id) deserialize:(SerializableData *)data
{
Program *newProgram = [[Program alloc] init];
[data readString:&(newProgram->programName)];
在我实际调用该函数的行上,我收到以下错误:
将非本地对象的地址传递给 __autoreleasing 参数以进行回写
我尝试将 放在__autoreleasing
声明NSString
的前面,第一个前面*
,以及两者之间*
,但是所有配置都会产生错误。
我是在阅读另一个问题时错过了什么,还是自那篇帖子发布以来ARC编译器中的某些内容发生了变化?
编辑:
似乎问题出在我尝试访问字符串的方式上。我可以通过执行以下操作来解决它:
NSString* temp;
[data readString&(temp)];
newProgram.programName = temp;
但我宁愿直接访问 ivar