Ios ARC Objective-C中的输出参数
我使用的是Objective-C,在使用ARC编译器编译代码时,我不知道如何创建和调用没有参数的方法 这就是我试图在非ARC Objective-C中完成的事情(无论如何,这可能是错误的) 我已经阅读了这里的文档: 在这里:Ios ARC Objective-C中的输出参数,ios,automatic-ref-counting,autorelease,Ios,Automatic Ref Counting,Autorelease,我使用的是Objective-C,在使用ARC编译器编译代码时,我不知道如何创建和调用没有参数的方法 这就是我试图在非ARC Objective-C中完成的事情(无论如何,这可能是错误的) 我已经阅读了这里的文档: 在这里: …但是我发现很难得到任何编译的东西,更不用说任何正确的东西了。是否有人能够以适合ARC Objective-C的方式重写上述代码的jist?您需要在out参数上使用\uu autoreleasing属性: - (void) barOutString:(NSString
…但是我发现很难得到任何编译的东西,更不用说任何正确的东西了。是否有人能够以适合ARC Objective-C的方式重写上述代码的jist?您需要在out参数上使用
\uu autoreleasing
属性:
- (void) barOutString:(NSString * __autoreleasing *)myString {
NSString* foo = [[NSString alloc] initWithString:@"hello"];
*myString = foo;
}
预录文档(我不允许链接到NDA)将两个*'中的
b
)。您必须使用此表格:
- (void) foo {
NSString* a = nil;
[self barOutString:&a];
NSLog(@"%@", a);
}
您还直接对一个完全错误的对象调用了
dealloc
。我建议您阅读内存管理指南。您到底有什么问题?你会遇到什么编译器错误?我已经用你的建议更新了上面的代码示例,并包含了一组编译器错误。谢谢。请看我的最新答案。正如编译器所说,您不能使用那样的间接指针,而是必须直接传入&a
。感谢您的帮助@MikeWeller,上面的代码现在可以编译了-技术上正确吗?您不需要b
变量,只需传入&a
作为参数即可。您也不需要对a
和b
变量使用\uu自动释放
,除非您需要访问barOutString:
中的初始值,这不是很常见。第一种方法中有一个小错误<代码>*myString=&foo应更改为*myString=foo代码>。谢谢,修复了。不知道那是怎么进去的。
- (void) foo {
NSString* a = nil;
[self barOutString:&a];
NSLog(@"%@", a);
}