麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

ARC下OC對象和CF對象之間的橋接(bridge)

2019-11-09 17:49:10
字體:
供稿:網(wǎng)友

ARC下OC對象和CF對象之間的橋接(bridge)

在開發(fā)iOS應(yīng)用程序時我們有時會用到Core Foundation對象簡稱CF,例如Core Graphics、Core Text,并且我們可能需要將CF對象和OC對象進(jìn)行互相轉(zhuǎn)化,我們知道,ARC環(huán)境下編譯器不會自動管理CF對象的內(nèi)存,所以當(dāng)我們創(chuàng)建了一個CF對象以后就需要我們使用CFRelease將其手動釋放,那么CF和OC相互轉(zhuǎn)化的時候該如何管理內(nèi)存呢?答案就是我們在需要時可以使用__bridge,__bridge_transfer,__bridge_retained,具體介紹和用法如下

1.__bridge:CF和OC對象轉(zhuǎn)化時只涉及對象類型不涉及對象所有權(quán)的轉(zhuǎn)化;

NSURL *url = [[NSURL alloc] initWithString:@"http://www.baidu.com"];CFURLRef ref = (CFURLRef)url;

上面的這段代碼在ARC環(huán)境下系統(tǒng)會給出錯誤提示和錯誤修正,修正后如下:

NSURL *url = [[NSURL alloc] initWithString:@"http://www.baidu.com"];CFURLRef ref = (__bridge CFURLRef)url;

系統(tǒng)為我們自動添加了__bridge,因?yàn)槭荗C創(chuàng)建的對象并且在轉(zhuǎn)換時沒有涉及對象所有權(quán)的轉(zhuǎn)換,所以上面的代碼不需要加CFRelease

2.__bridge_transfer:常用在講CF對象轉(zhuǎn)換成OC對象時,將CF對象的所有權(quán)交給OC對象,此時ARC就能自動管理該內(nèi)存;(作用同CFBridgingRelease())

 

3.__bridge_retained:(與__bridge_transfer相反)常用在將OC對象轉(zhuǎn)換成CF對象時,將OC對象的所有權(quán)交給CF對象來管理;(作用同CFBridgingRetain())

NSURL *url = [[NSURL alloc] initWithString:@"http://www.baidu.com"];CFURLRef ref = (__bridge_retained CFURLRef)url;CFRelease(ref);
當(dāng)使用_bridge_retained標(biāo)識符以后,代表OC要將對象所有權(quán)交給CF對象自己來管理,所以我們要在ref使用完成以后用CFRelease將其手動釋放.復(fù)制代碼
CFStringRef cfString= CFURLCreateStringByAddingPercentEscapes(                                                                  NULL,                                                                  (__bridge CFStringRef)text,                                                                  NULL,                                                                  CFSTR("!*’();:@&=+$,/?%#[]"), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));NSString *ocString = (__bridge_transfer CFStringRef)cfString;復(fù)制代碼

此時OC即獲得了對象的所有權(quán),ARC負(fù)責(zé)自動釋放該對象,如果我們在結(jié)尾加上CFRelease(cfString)純屬畫蛇添足,雖不會崩潰,但是控制臺會打印出該對象被free了兩次。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久艹精品视频 | 午夜视频啊啊啊 | 色播亚洲 | 黄色片网站在线看 | 欧美a视频在线观看 | 久久久久国产成人精品亚洲午夜 | 91九色精品 | 久草热久草视频 | 毛片一区二区三区 | 欧美成人免费电影 | 国产精品成人一区二区三区电影毛片 | 成人爽a毛片免费啪啪红桃视频 | 国产精品爱久久久久久久 | 国产毛片网站 | 中文字幕一区久久 | 午夜看毛片 | 毛片在线免费视频 | 一级一级一级一级毛片 | 宅男噜噜噜66国产在线观看 | 韩毛片 | 羞羞的视频免费在线观看 | 中文字幕www| 免费欧美一级视频 | 在线播放亚洲 | 国产一级毛片视频在线! | 欧美性受xxxx人人本视频 | 女人裸体让男人桶全过程 | 91天堂国产在线 | 国产精品一区二av18款 | 国产欧美亚洲精品 | 羞羞视频免费视频欧美 | 亚洲一级电影在线观看 | 深夜福利视频绿巨人视频在线观看 | 黄色片视频在线观看 | 国产精品亚洲综合一区二区三区 | 成人在线视频精品 | 久久久久久久久国产 | 欧美成人精品一区二区三区 | 性少妇videosexfreexx入片 | 成年人视频免费看 | 国产 一区 |