en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

9.05.2011

@class 指令和前端處理程式 #import 的區別

當我們需要使用一個類別 Class 裡的參數與方法時,在 Objective-C 裡會使用 #import 前端處理程式,它不但可以讓程式知道被匯入的類別內的方法與參數,也可以確保該類別不會被重複引用。但是如果並不需要知道類別內的參數和方法,只是想要把該類別當作參數一樣的傳遞,那麼就可以考慮使用 @class 指令來增加效率。

使用 @class 指令時,編譯器並不需要處理整個 .h 標頭檔,只是宣告該物件為一個類別而已,所以無法調用其內部參數和具體方法。

這裡提供一個簡單的例子,製作一個 Furnace 類別,其宣告如下。

Furnace.h
@interface Furnace : NSObject {
int x, y;
}
@property int x;
@property int y;

- (void)printValues;
@end

接著,如果們在使用這個類別時不需要調用到其內部參數與方法,就可以使用 @class 指令來增加效率。

@class Furnace;

- (Furnace *)someMethod:(Furnace *)obj {

    Furnace *_obj;
    _obj = obj;

    return _obj;
}

可以看到在上述程式碼中,並沒有使用到 Furnace 類別裡的方法或是參數,只是將整個類別當作參數一樣的傳遞。







沒有留言:

張貼留言