解析Cocoa 中 Core Foundation 对象内存管理

linxinfei 2011-07-07

先了解一下Cocoa的基础知识是必要的,然后就是学一下iphone开发最主要的编程语言Objective─c,这对新手后面iphone开发的学习很有帮助,上来就拿本书看iphone开发的容易晕。

许多Core Foundation对象和Cocoa实例可以简单地相互进行类型转换,比如CFString和NSString对象。本文介绍如何管理Cocoa中的Core Foundation对象。有关对象所有权的一般信息请参考“对象的所有权和销毁”。

Core Foundation对象的内存分配策略是,您需要释放那些由名字中包含“Copy”或“Create”的函数返回的值;您不应该释放那些由名字中不包含“Copy”或“Create”的函数返回的值。

Core Foundation对象和Cocoa使用的公约非常相似,而且由于分配(allocation)/保留(retain)/释放(release)的实现是兼容的—每种环境中等价的函数和方法可以混合使用。因此,

NSString *str = [[NSString alloc] initWithCharacters: ...];   


...   


[str release];  

等同于

CFStringRef str = CFStringCreateWithCharacters(...);   


 ...   


CFRelease(str);  

NSString *str = (NSString *)CFStringCreateWithCharacters(...);   


 ...   


[str release];  

 NSString *str = (NSString *)CFStringCreateWithCharacters(...);   


 ...   


[str autorelease];  

相关推荐