解析Cocoa 中 Core Foundation 對象內存管理
先了解一下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];
正如這些代碼示例所示,一旦被創建,類型轉換對象可以被視為Cocoa或Core Foundation對象,而且,在每種環境中看起來都是“本地”的。
小結:解析Cocoa 中 Core Foundation 對象內存管理的內容介紹完了,希望本文對你有所幫助!