iOS class與 import的區別

2021-08-06 05:48:02 字數 906 閱讀 7047

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型別。當乙個類被正確的編譯過後,在這個編譯成功的類裡面,存在乙個變數用於儲存這個類的資...