Extension

extension可以認爲是匿名的category,但是這個extension相對於category有有一個特殊功能:
在extension中可以定義可寫的屬性,公有可讀、私有可寫的屬性(Publicly-Readable, Privately-Writeable Properties)一般這樣實現!

舉例說明如下:
1. 創建測試程序empty application
2. 我們自定義一個UIViewController,命名爲RootViewController,它的.h文件爲:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end

那麼在其對應的.m中會自動生成以下代碼:
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
3. 第2步中的.m文件中我們能看到
@interface ViewController : UIViewController
@end
這個就是extension了(也就是特殊類型的category)

如果我們在.h添加這樣一個屬性
@property (readonly) float value;
那麼RootViewController對外就暴露一個readonly的屬性,它是公開的,所以外部是不能夠對它進行寫操作的。
這時我們可以在extension加入以下代碼:
@property (readwrite) float value;
那麼這個屬性在內部就是可讀寫的了,如果是隻讀只能在構造時期對它賦值,其他類方法中是不能對其賦值的。
有了這個特性支持,那麼類的內部方法均可以對其進行賦值了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章