第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

@class與#import

@class與#import

iOS
慕哥6287543 2019-06-09 15:43:48
@class與#import據(jù)我理解,在ClassA需要包含ClassB頭的事件中,應該使用前向類聲明,而ClassB需要包含ClassA頭,以避免任何循環(huán)包含。我也知道#import是一個簡單的ifndef所以包含只發(fā)生一次。我的詢問是:什么時候使用?#import什么時候才能使用@class?有時如果我用@class聲明中,我看到一個常見的編譯器警告,如下所示:warning: receiver 'FooController' is a forward class and corresponding @interface may not exist.很想了解這一點,而不是僅僅刪除@class向前聲明并拋出#import來壓制編譯器給我的警告。
查看完整描述

3 回答

?
慕妹3146593

TA貢獻1820條經(jīng)驗 獲得超9個贊

如果您看到此警告:

警告:接收器‘MyCoolClass’是一個前向類,可能不存在相應的@接口

你需要#import文件,但是可以在實現(xiàn)文件(.m)中這樣做,并使用@class在頭文件中聲明。

@class不會(通常)消除#import文件,它只是將需求向下移動到信息有用的地方。

例如

如果你說@class MyCoolClass,編譯器知道它可能會看到如下內(nèi)容:

MyCoolClass *myObject;

它不需要擔心任何事情,除了MyCoolClass是一個有效的類,它應該為指向它的指針預留空間(實際上,只是一個指針)。因此,在你的標題中,@class就夠90%的時間了。

但是,如果您需要創(chuàng)建或訪問myObject作為成員,您需要讓編譯器知道這些方法是什么。#import "MyCoolClass.h",告訴編譯器更多的信息,而不僅僅是“這是一個類”。


查看完整回答
反對 回復 2019-06-09
?
繁星點點滴滴

TA貢獻1803條經(jīng)驗 獲得超3個贊

三個簡單的規(guī)則:

  • #import

    超類和采用的協(xié)議,在頭文件(

    .h

    檔案)。
  • #import

    在實現(xiàn)中向所有類和協(xié)議發(fā)送消息(

    .m

    檔案)。
  • 其他一切的前向聲明。

如果您在實現(xiàn)文件中進行前向聲明,那么您可能做錯了什么。


查看完整回答
反對 回復 2019-06-09
  • 3 回答
  • 0 關注
  • 486 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號