在extension中可以定義可寫的屬性,公有可讀、私有可寫的屬性(Publicly-Readable, Privately-Writeable Properties)一般這樣實現!
舉例說明如下:
1. 創建測試程序empty application
2. 我們自定義一個UIViewController,命名爲RootViewController,它的.h文件爲:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
那麼在其對應的.m中會自動生成以下代碼:
@interface ViewController : UIViewController
@end
#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;
那麼這個屬性在內部就是可讀寫的了,如果是隻讀只能在構造時期對它賦值,其他類方法中是不能對其賦值的。
有了這個特性支持,那麼類的內部方法均可以對其進行賦值了。