解析Cocoa 中 Core Foundation 對象內(nèi)存管理
先了解一下Cocoa的基礎(chǔ)知識是必要的,然后就是學(xué)一下iphone開發(fā)最主要的編程語言O(shè)bjective─c,這對新手后面iphone開發(fā)的學(xué)習(xí)很有幫助,上來就拿本書看iphone開發(fā)的容易暈。
許多Core Foundation對象和Cocoa實(shí)例可以簡單地相互進(jìn)行類型轉(zhuǎn)換,比如CFString和NSString對象。本文介紹如何管理Cocoa中的Core Foundation對象。有關(guān)對象所有權(quán)的一般信息請參考“對象的所有權(quán)和銷毀”。
Core Foundation對象的內(nèi)存分配策略是,您需要釋放那些由名字中包含“Copy”或“Create”的函數(shù)返回的值;您不應(yīng)該釋放那些由名字中不包含“Copy”或“Create”的函數(shù)返回的值。
Core Foundation對象和Cocoa使用的公約非常相似,而且由于分配(allocation)/保留(retain)/釋放(release)的實(shí)現(xiàn)是兼容的—每種環(huán)境中等價的函數(shù)和方法可以混合使用。因此,
- NSString *str = [[NSString alloc] initWithCharacters: ...];
- ...
- [str release];
等同于
- CFStringRef str = CFStringCreateWithCharacters(...);
- ...
- CFRelease(str);
和
- NSString *str = (NSString *)CFStringCreateWithCharacters(...);
- ...
- [str release];
和
- NSString *str = (NSString *)CFStringCreateWithCharacters(...);
- ...
- [str autorelease];
正如這些代碼示例所示,一旦被創(chuàng)建,類型轉(zhuǎn)換對象可以被視為Cocoa或Core Foundation對象,而且,在每種環(huán)境中看起來都是“本地”的。
小結(jié):解析Cocoa 中 Core Foundation 對象內(nèi)存管理的內(nèi)容介紹完了,希望本文對你有所幫助!