我有一个问题......我正在阅读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是否已经等于员工的内容.如果是,退出该功能,否则它将解除分配员工并将员工设置为等于?
我在这里先向您的帮助表示感谢!
我想你正在看第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.在将当前雇员数组设置为新阵列之前释放当前雇员数组非常重要,这样您就不会泄漏内存.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |