你需要发布一些非常简单的东西吗?objective-c内存管理问题
NSString *a = @"Hello";
//[a release]; ?
我来自一个Java/C#世界,感到困惑的事情时,应该释放/保留...
你需要发布一些非常简单的东西吗?objective-c内存管理问题
NSString *a = @"Hello";
//[a release]; ?
我来自一个Java/C#世界,感到困惑的事情时,应该释放/保留...
不,你不需要释放一个常量NSString,尽管如果你这样做不会引起任何问题。常量字符串是内存管理系统的特例。由于它们的内容在编译时已知,因此它在应用程序二进制文件中是静态定义的,所以它在运行时永远不必分配或释放。出于这个原因,它的保留和释放方法是noops。
这仅适用于常量NSStrings(以@开头的字符串)及其免费桥接表亲,常量CFStrings(使用CFSTR()宏定义))。
号只需release
对象,你init
/alloc
自己或您的实例变量在你的类dealloc
方法中。
合成的IB属性呢? – Yaso 2010-07-05 21:46:58
取决于它们的对象类型,例如NSString是,NSInteger没有。但正如我上面所说的,这些将以你的'dealloc'方法进行。 – 2010-07-06 02:19:59
您需要在dealloc中释放所有IB属性,并且您的对象已保留的所有属性都与对象类型无关。你不释放NSInteger的唯一原因是它不是一个对象,它是一个标量。另一方面,你会释放一个NSNumber。 – 2010-07-06 03:32:39
我认为这是一个重复的问题。看到这里:http://stackoverflow.com/questions/2888217/static-nsstrings-in-objective-c/2888231#2888231 – harms 2010-07-05 21:30:48