gpt4 book ai didi

iphone - 使用自函数

转载 作者:行者123 更新时间:2023-11-28 17:46:49 25 4
gpt4 key购买 nike

为什么使用 self ....self.something = manything; 的含义是什么

最佳答案

主要区别在于调用时不使用 self 将直接访问变量,而通过 self 调用将调用 set/get 方法。有什么区别?

因为在 Objective-C 中您需要小心内存,当您执行 something = manything; 时,许多东西附加到某物上,而之前附加到某物上的对象丢失了。

最好的做法是使用 set 方法,该方法负责在设置新对象之前释放旧对象。您只需记住,要设置某些内容,最好使用 self.something


举个简单的例子:

1) 如果你这样做(假设 myArray 是一个属性):坏的情况

NSArray *tmpArray = [NSArray arrayWithObjects:@"obj1", @"obj2", nil];
myArray = tmpArray;

第一行创建一个自动释放数组,然后我们将这个数组赋值给 myArray。如果某些东西在 myArray 中,则它不会被释放并且新数组不会保留。这将导致内存泄漏和当我们之后尝试访问 myArray 时崩溃,因为自动释放的数组将被释放。

2) 如果你这样做:好案例

NSArray *tmpArray = [NSArray arrayWithObjects:@"obj1", @"obj2", nil];
self.myArray = tmpArray; //Equivalent to [self setMyArray:tmpArray];

我们在这里调用访问器方法,这个方法将在需要时处理旧对象的释放(没有内存泄漏),如果还需要它,将保留新的分配对象(数组现在由我们的属性保留并且可以将来可以访问)。

=> 继续,这都是关于内存管理的。

关于iphone - 使用自函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5389436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com