1.@class基本概念
作用 可以簡單地引用乙個類
簡單使用 @class dog;
僅僅是告訴編譯器:dog是乙個類;並不會包含dog這個類的所有內容
具體使用
在.h檔案中使用@class引用乙個類
在.m檔案中使用#import包含這個類的.h檔案
2.@class其它應用場景
對於迴圈依賴關係來說,比方a類引用b類,同時b類也引用a類
這種巢狀包含的**編譯會報錯
當使用@class在兩個類相互宣告,就不會出現編譯報錯
3.@class和#import
作用上的區別
import會包含引用類的所有資訊(內容),包括引用類的變數和方法
@class僅僅是告訴編譯器有這麼乙個類, 具體這個類裡有什麼資訊, 完全不知
效率上的區別
如果有上百個頭檔案都#import了同乙個檔案,或者這些檔案依次被#import,那麼一旦最開始的標頭檔案稍有改動,後面引用到這個檔案的所有類都需要重新編譯一遍 , 編譯效率非常低
相對來講,使用@class方式就不會出現這種問題了
總結: 在
objective-c
的專案中, @class通常放在.h檔案中, 主要作用在於提公升編譯效能, 且能防止標頭檔案的遞迴import.
通常, 使用#import引入乙個類的標頭檔案, 編譯時會將該類的標頭檔案中的所有資訊都引入, 包含屬性和方法, 但有時候卻不需要這麼多, 且包含這些資訊會降低編譯效能.
而@class就表示這只是乙個類而已, 我們所關心的僅此一點, 而不需要知道該類的內部有哪些屬性和方法. 這種情況下, 我們在.h標頭檔案中就可以僅僅使用@class, 以提公升編譯效能. 而在.m實現檔案中, 往往就需要知道類的內部資訊了, 這時就需使用#import來引入這些資訊.
import與 import的使用
在xcode 5 下,為了更易於專案開發,增加了modules和 auto linking 這兩個新特性。用 import 來增加框架專案中比用 import會更有效.modules and auto linking 預設情況下是enabled的。如果是舊的專案,你可以通過設定 language m...
import與 import的使用
在xcode 5 下,為了更易於專案開發,增加了modules和 auto linking 這兩個新特性。用 import 來增加框架專案中比用 import會更有效.modules and auto linking 預設情況下是enabled的。如果是舊的專案,你可以通過設定 language m...
iOS Class 基礎解釋 一
class型別 到目前為止,我們已經知道了對應於方法的sel資料型別,和sel同樣在objective c裡面我們不僅僅可以使用對應於方法的sel,對於類在objective c也為我們準備了類似的機制,class型別。當乙個類被正確的編譯過後,在這個編譯成功的類裡面,存在乙個變數用於儲存這個類的資...