iOS instancetype和id

簡(jiǎn)介

IOS開發(fā)中經(jīng)常會(huì)碰到不確定類型的情況沦寂,在這種情況下OC提供了兩種方式供開發(fā)者選擇:

  • instancetype在類型表示上嗜侮,跟id一樣,可以表示任何對(duì)象類型

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

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

其中第3點(diǎn), 會(huì)發(fā)生在如下情況下:

+ (id)person{
   return [[self alloc] init];
}

NSString *str = [Person person];

上面這行代碼,用字符串類型的指針指向Person類的對(duì)象,編譯通過(guò),因?yàn)閜erson返回的id類型,任何指針都可以指向它

而如果用instancetype,編譯時(shí),會(huì)有警告.也就是說(shuō)instancetype比id多了檢測(cè)真實(shí)類型的功能,可以提前暴露程序存在的風(fēng)險(xiǎn)

+ (instancetype)person{
   return [[self alloc] init];
}

NSString *str = [Person person]; //會(huì)有警告,[Person person]返回的Person類型, 警告信息:把Person類型的數(shù)據(jù)賦值給字符串類型

可以這么說(shuō),作為返回值時(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];
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市欠窒,隨后出現(xiàn)的幾起案子覆旭,更是在濱河造成了極大的恐慌退子,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件型将,死亡現(xiàn)場(chǎng)離奇詭異寂祥,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)七兜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門丸凭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人腕铸,你說(shuō)我怎么就攤上這事惜犀。” “怎么了狠裹?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵虽界,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我涛菠,道長(zhǎng)莉御,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任俗冻,我火速辦了婚禮礁叔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘迄薄。我一直安慰自己琅关,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布噪奄。 她就那樣靜靜地躺著死姚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪勤篮。 梳的紋絲不亂的頭發(fā)上都毒,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音碰缔,去河邊找鬼账劲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛金抡,可吹牛的內(nèi)容都是我干的瀑焦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼梗肝,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼榛瓮!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起巫击,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤禀晓,失蹤者是張志新(化名)和其女友劉穎精续,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粹懒,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡重付,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凫乖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片确垫。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖帽芽,靈堂內(nèi)的尸體忽然破棺而出删掀,到底是詐尸還是另有隱情,我是刑警寧澤嚣镜,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布爬迟,位于F島的核電站,受9級(jí)特大地震影響菊匿,放射性物質(zhì)發(fā)生泄漏付呕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一跌捆、第九天 我趴在偏房一處隱蔽的房頂上張望徽职。 院中可真熱鬧,春花似錦佩厚、人聲如沸姆钉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)潮瓶。三九已至,卻和暖如春钙姊,著一層夾襖步出監(jiān)牢的瞬間毯辅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工煞额, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留思恐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓膊毁,卻偏偏與公主長(zhǎng)得像胀莹,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子婚温,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,101評(píng)論 1 32
  • 上述代碼塊中描焰,返回類型分為 instancetype和id兩種,各在何種情況下使用呢栅螟?instancetype 關(guān)...
    憤怒小鳥飛呀飛閱讀 530評(píng)論 0 0
  • 午后2點(diǎn)是個(gè)奇妙的節(jié)點(diǎn)荆秦。因?yàn)橄挛绲恼n是1點(diǎn)半開始逆日,所以到了2點(diǎn)鐘的時(shí)候,已經(jīng)在校園里看不見(jiàn)同學(xué)們從校園東北的生活區(qū)...
    可昕Tania閱讀 207評(píng)論 1 2
  • 假如萄凤,還有那么一天, 你我徜徉在蒹葭水湄搪哪,任逢春的粉桃飛花長(zhǎng)堤十里雪濤靡努,將梨花飛雨的一幕織就一幅曼妙。我一定和你吟...
    無(wú)忌西東7閱讀 387評(píng)論 1 11
  • 那久存心中的晓折,終將隨風(fēng)而逝那掛在墻壁的惑朦,總是與材料同壽 天地間誰(shuí)能久存生命?權(quán)力漓概?財(cái)富漾月?在歷史長(zhǎng)河里覆滅了多少帝王...
    瑜伽散人閱讀 267評(píng)論 0 3