0

假设我在 viewDidLoad 中有:

NSMutableArray *entries = [NSMutableArray array];
[self doSomethingWithArray:entries];

NSLog(@"%@", entries);

然后在方法中我有:

- (void)doSomethingWithArray:(NSMutableArray *)entries
{
    // create some custom data here, lets say - Something *something...
    [entries addObject:something];
}

现在(方法完成后)条目(顶部的一个)怎么可能包含对象某物,因为对象“某物”未添加到属性或实例变量中,并且 nslog 将记录类“某物”?并且 doSomethingWithArray 自“无效”以来不返回任何内容。

我第一次遇到这个,不知道有没有这个外观的名字?

我在一些例子中第二次看到这个,真的不知道它是怎么做的。

如果有人能解释一下这里发生了什么,我将非常感激。

十分感谢。

4

2 回答 2

1

因为 Objective-C 实例是通过引用传递的(正如您可以通过*指针语法看出的那样)。您基本上将数组的地址传递给doSomethingWithArray:方法。在该方法中,您向该地址引用的数组添加一些内容。当然,一旦方法返回,您的数组将包含该新对象。

于 2013-05-28T11:14:49.687 回答
0

当您将something对象添加到数组时,数组始终保留它,即它维护Something对象的副本。

所以 NSLog 打印了一些东西

希望有帮助。

于 2013-05-28T11:18:04.463 回答