instancetype在類型表示上,跟id一樣,可以表示任何對象類型2>instancetype只能用在返回值類型上,不能像id一樣用在參數(shù)類型上3>instancetype比id多一個(gè)好處:編譯器會(huì)檢測instancetype的真實(shí)類型第3點(diǎn)的解釋:在下面這種情況下//Person.m文件里+(id)person{return[[selfalloc]init];}//mainViewController.m,下面這行代碼,用字符串類型的指針指" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

iOS instancetype和id的區(qū)別

系統(tǒng) 2691 0

區(qū)別: 

1>instancetype在類型表示上,跟id一樣,可以表示任何對象類型

2>instancetype只能用在返回值類型上,不能像id一樣用在參數(shù)類型上

3>instancetype比id多一個(gè)好處:編譯器會(huì)檢測instancetype的真實(shí)類型

第3點(diǎn)的解釋: 在下面這種情況下
// Person.m文件里
+ (id)person{
? ? ?return [[self alloc] init];
}
// mainViewController.m,下面這行代碼,用字符串類型的指針指向Person類的對象,編譯通過,因?yàn)閜erson返回的id類型,任何指針都可以指向它
NSString *str = [Person person];
?
// 如果用instancetype,編譯時(shí),會(huì)有警告.也就是說instancetype比id多了檢測真實(shí)類型的功能,可以提前暴露程序存在的風(fēng)險(xiǎn)
+ (instancetype)person{
? ? ?return [[self alloc] init];
}
NSString *str = [Person person]; //會(huì)有警告,[Person person]返回的Person類型, 警告信息:把Person類型的數(shù)據(jù)賦值給字符串類型
?

// 可以這么說,作為返回值時(shí),凡是用id的地方,都建議換成instancetype,例如下面的代碼
- (instancetype)initWithDic:(NSDictionary *) app
{
??? if(self == [super init]){
   ?self.name = app[@"name"];
??????? self.icon = app[@"icon"];
??? }
??? return self;
}
+ (instancetype)initWithDic:(NSDictionary *) app
{
??? return [[[self alloc]init] initWithDic:app];
}
?

iOS instancetype和id的區(qū)別


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 班戈县| 百色市| 江油市| 乾安县| 馆陶县| 玉门市| 米易县| 文昌市| 台江县| 东山县| 五寨县| 南川市| 肇州县| 丹巴县| 安国市| 莲花县| 红原县| 焦作市| 静安区| 得荣县| 乃东县| 岳普湖县| 扎兰屯市| 武陟县| 安康市| 门源| 寿光市| 宁阳县| 腾冲县| 习水县| 昌平区| 赤峰市| 吴堡县| 交城县| 大丰市| 普格县| 洪洞县| 黄陵县| 绥宁县| 禹州市| 化德县|