簡體   English   中英

Objective-C @類/導入最佳實踐

[英]Objective-C @class / import best practice

我注意到,很多Objective-C示例都會使用@class轉發聲明的類,然后通過導入將類實際導入到.m文件中。 我了解這被認為是最佳做法,如以下問題的答案所述: @class vs. #import

來自C ++,這讓人感到倒退。 我通常會在新的類頭文件中包含所有需要的.h文件。 這似乎很有用,因為當兩個類相互包含時,它會使編譯器生成警告,此時,我可以判斷這是否不好,然后使用相同的Objective-C樣式並在標頭中聲明該類,然后將其包括在.cpp文件中。

向前聲明@class並導入到實現文件中有什么好處? 在C ++中,最好的做法是轉發聲明的類而不是包含頭文件? 還是以這些相似的術語來考慮Objective-C和C ++是錯誤的?

老實說,您的C ++實際上倒退了。 通常,在C ++中,您要避免將標頭包含在其他標頭中,而更喜歡將前向聲明包括在內。 通常認為這是最佳做法,因為它可以減少編譯時間,並將饋入編譯器中的預處理代碼文件的大小縮小到所需的大小。 斯科特·邁耶斯(Scott Meyers)在有效的C ++中對此進行了精彩介紹。

為了更直接地回答您的問題,前向聲明類並將其導入到實現文件中(在C ++和目標c中)的優點是,基本上,前向聲明使之成為可能,因此使用您的類的任何其他類都不一定需要包括您的課堂使用的所有東西。 這減少了預處理代碼文件的大小(這使預處理速度更快),使編譯速度更快,並且鏈接速度更快。 所有這些通常都是好東西。 在更晦澀的情況下,減少include語句可以使查找某些類型的錯誤(例如,標頭中缺少分號)更容易,這些錯誤會產生並不總是很明顯的編譯器警告,但在包含標頭的所有地方都會重復出現並發送垃圾郵件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM