Objective-C代码说明?

hah*_*g65 0 cocoa objective-c

我有一个问题......我正在阅读Mac OSX的Cocoa Programming和第8章第1部分,他正在编写MyDocument.m文件

什么行

employees a;
Run Code Online (Sandbox Code Playgroud)

做?

employees = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)

在上面,这意味着员工是一个可变阵列,但我不确定是什么

employees a;
Run Code Online (Sandbox Code Playgroud)

确实.

我只是猜测,但看起来代码正在检查参数a是否已经等于员工的内容.如果是,退出该功能,否则它将解除分配员工并将员工设置为等于?

我在这里先向您的帮助表示感谢!

Abi*_*ern 5

我想你正在看第3版的第127页.

在init函数中,employees数组已初始化:

employees = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)

这将创建一个可变数组,然后将employees变量设置为指向它.

我想你是在询问访问者功能:

-(void)setEmployees:(NSMutableArray *)a
{
    if (a == employees)
        return;

    [a retain];
    [employees release];
    employees = a;
}
Run Code Online (Sandbox Code Playgroud)

这是随后以KVC方式更改employees数组时调用的函数; 这看起来与初始化代码不同,因为已经创建了传入的NSMutable数组.

首先,函数检查它是否与当前employees数组是同一个数组,如果是,则不需要进行任何更改,因此函数返回.

然后,保留传入的数组,并释放现有的数组.之后,将employees数组设置为指向新数组a.在将当前雇员数组设置为新阵列之前释放当前雇员数组非常重要,这样您就不会泄漏内存.

希望这可以帮助.