您好,登錄后才能下訂單哦!
instancetype是clang3.5開始,clang提供的一個關鍵字,表示某個方法返回的未知類型的Objective-C對象。
instancetype只能作為返回值,不能像id那樣作為參數。
使用 instancetype 返回的一定是調用該方法的實例,而id則不一定,因為id是作為一個范型來使用的
相同點:都可以作為方法的返回類型
①instancetype可以返回和方法所在類相同類型的對象,id只能返回未知類型的對象;
②instancetype只能作為返回值,不能像id那樣作為參數
使用instancetype有三點好處:
1、明確性。代碼只做你讓它做的事,而不是其他。
2、程式化。你會養成好習慣,這些習慣在某些時候會很有用,而且肯定有用武之地。
3、一致性。讓代碼可讀性更好。
用instancetype代替init作為返回值的確沒有技術上的好處。但這是因為編譯器自動將id轉化成了instancetype。你以為init返回的值類型是id,其實編譯器返回了instancetype。
在寫一條返回id的消息前,問自己:這個類返回實例嗎?如果返回,用instancetype。
肯定有需要返回id的時候,但你用instancetype的頻率應該會更高
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。