Coo*_*coa 9 iphone cocoa cocoa-touch objective-c ios
这不是垃圾收集环境
我有一个类实例变量,在我的运行时的某个时刻,我需要使用与最初构造时不同的数据集重新初始化.
假设,如果我有一个NSMutableArray或一个NSMutableDictionary,那么做一些事情会更有效:
[myArr release];
myArr = [[NSMutableArray alloc] init....];
Run Code Online (Sandbox Code Playgroud)
要不就,
myArr = nil;
Run Code Online (Sandbox Code Playgroud)
myArr是否会释放该对象并让我没有指向内存中的存储器的指针,这样我就可以重新使用myArr了?
Abi*_*ern 21
如果你自己做myArr=nil;,那么你已经丢失了可以发送release消息的指针.release你的物体没有魔力.
并且,正如乔治所说,无法释放你的物体,那个记忆已经"泄露"了.
您可以使用属性并获得所需的语法,而不会出现内存泄漏.
使用此语法声明数组
@property (readwrite, retain) NSMutableArray *myArray;
Run Code Online (Sandbox Code Playgroud)
然后像这样重新初始化它:
[self setMyArray:[NSMutableArray array]];
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Mac OS,而不是iPhone OS,我会说它取决于垃圾收集器是否被激活:
myArr = nil;[myArr release];不幸的是,在iPhone上,没有垃圾收集,所以如果你不想要内存泄漏,你必须在不再需要它时释放你的对象.
| 归档时间: |
|
| 查看次数: |
5109 次 |
| 最近记录: |