NSMutableString和nil用于内存管理

5 iphone cocoa cocoa-touch objective-c

如果我有NSMutableString这样的

NSMutableString *foo = [[NSMutableString alloc] init];
Run Code Online (Sandbox Code Playgroud)

如果我把对象弄清楚了foo = nil,是否会将保留计数降低1,从而有效地释放内存?此时我是否需要从堆中重新分配foo才能使用它?

Jim*_*uls 8

请阅读基本文档.将变量设置foo为nil对其先前的内容没有任何影响.记住,foo它只是一个指向对象的指针; 要使用它,你必须使它指向一个有效的对象.只是为了使它不再指向该对象不再释放该对象.


Chu*_*uck 5

将nil分配给变量不会影响以前的值.保留计数仅降低release.

您应该阅读Apple的Cocoa内存管理指南.Cocoa的引用计数系统并不困难,但它是你必须学习的东西,如果你没有正确学习它,你的程序会有很多微妙的错误会让你发疯.