Ios 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

我使用的是Objective-C,在使用ARC编译器编译代码时,我不知道如何创建和调用没有参数的方法

这就是我试图在非ARC Objective-C中完成的事情(无论如何,这可能是错误的)

我已经阅读了这里的文档:

在这里:


…但是我发现很难得到任何编译的东西,更不用说任何正确的东西了。是否有人能够以适合ARC Objective-C的方式重写上述代码的jist?

您需要在out参数上使用
\uu autoreleasing
属性:

- (void) barOutString:(NSString * __autoreleasing *)myString {
    NSString* foo = [[NSString alloc] initWithString:@"hello"];
    *myString = foo;
}

预录文档(我不允许链接到NDA)将两个*'中的AutoReleLoad < /C> >,但它可能只是作为<代码>(SytAutoelEngSnStask**)

您也不能像在原始代码中那样使用间接双指针(
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);
}