staic和bridge

1.static全局變量與普通的全局變量有什么區(qū)別?:
static全局變量只初使化一次,防止在其他源文件中被引用;  
 
2.static局部變量和普通局部變量有什么區(qū)別?
static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值;
  
3.static函數(shù)與普通函數(shù)有什么區(qū)別?
static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個被調(diào)用中都維持一份拷貝

4.__bridge、__bridge_transfer、__bridge_retained三者之間的區(qū)別。
__bridge:,ARC下編譯器不允許你隱式的將Object-C 指針轉(zhuǎn)換成C指針,被代入對象的所有者需要明確對象生命周期的管理,不要出現(xiàn)異常訪問的問題。

id obj = [[NSObject alloc] init];
void *p = (__bridge void *)obj;

__bridge_retained: 將Objective-C對象轉(zhuǎn)換為Core Foundation對象,把對象所有權(quán)橋接給Core Foundation對象,同時剝奪ARC的管理權(quán)。告訴ARC 一旦__bridge_retained轉(zhuǎn)換完成,ARC就不用在負責釋放該對象了,使用者需要手動釋放,即使用者擁有該對象的持有權(quán)。

d obj = [[NSObject alloc] init];
void *p = (__bridge_retained void *)obj;

非ARC下等價于

id obj = [[NSObject alloc] init];
void *p = obj;
[(id)p retain];

__bridge_transfer:非Objective-C對象轉(zhuǎn)換為Objective-C對象,同時將對象的管理權(quán)交給ARC,開發(fā)者無需手動管理內(nèi)存。在類型轉(zhuǎn)換后,讓其釋放原先所有權(quán)的時候,需要使用 __bridge_transfer 關(guān)鍵字,告訴ARC 一旦__bridge_transfer轉(zhuǎn)換完成,ARC要負責釋放該對象!

    NSString *aNSString = [[NSString alloc]initWithFormat:@"test"];  
    CFStringRef aCFString = (__bridge_retained CFStringRef) aNSString;  
    aNSString = (__bridge_transfer NSString *)aCFString;
    可以看出來 __bridge_retained 是替我們做了 retain。剝奪ARC的管理權(quán)
    可以看出來 __bridge_transfer 是替我們做了 release。ARC獲得管理權(quán)

Toll-Free bridged
在iOS世界,主要有兩種對象:Objective-C 對象和 Core Foundation 對象0。Core Foundation 對象主要是有C語言實現(xiàn)的 Core Foundation Framework 的對象,其中也有對象引用計數(shù)的概念,只是不是 Cocoa Framework::Foundation Framework 的 retain/release,而是自身的 CFRetain/CFRelease 接口。

這兩種對象間可以互相轉(zhuǎn)換和操作,不使用ARC的時候,單純的用C原因的類型轉(zhuǎn)換,不需要消耗CPU的資源,所以叫做 Toll-Free bridged。比如 NSArray和CFArrayRef, NSString和CFStringRef,他們雖然屬于不同的 Framework,但是具有相同的對象結(jié)構(gòu),所以可以用標準C的類型轉(zhuǎn)換。
http://blog.csdn.net/yiyaaixuexi/article/details/8553659
https://www.cnblogs.com/xinye/p/3168601.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容