在Objective-C中通过引用传递数组

Gar*_*tet 4 syntax cocoa objective-c

我想通过引用传递一个NSMutableArray,以便它可以被另一个方法改变.这个的正确语法是什么?

谢谢,

Geo*_*che 17

Objective-C对象总是通过引用传递(使用指针) - 您不能通过值传递它们.

即以下是好的:

- (void)mutateArray:(NSMutableArray*)array {
    // alter array ...
}
Run Code Online (Sandbox Code Playgroud)

......并且可以像这样调用:

NSMutableArray *array = ...;
[self mutateArray:array];
Run Code Online (Sandbox Code Playgroud)

还有可能通过引用传递指针:

- (void)newArray:(NSMutableArray **)array;
Run Code Online (Sandbox Code Playgroud)

在这种情况下array用作out参数 - 您传递对指针的引用以接收实例:

- (void)newArray:(NSMutableArray **)array {
    *array = [[NSMutableArray alloc] init];
}
Run Code Online (Sandbox Code Playgroud)

......可以像这样调用:

NSMutableArray *array = nil;
[self newArray:&array];
Run Code Online (Sandbox Code Playgroud)

通常只有在已经使用了返回值并且必须返回其他信息时才能看到使用out参数.一个例子就是dreamlax指出的错误信息.