クラスメソッドの . (ドット)アクセス
実はクラスメソッドも .(ドット)表記が可能になった。
[SomeClass sharedInstance] ↓ SomeClass.sharedInstance当然ながらさらにメソッドも重ねられる。
SomeClass.sharedInstance.localNameXcodeではクラスメソッドの.表記は補完が効かないのが難点。ただしそれ以降のメソッドは補完してくれる。
例えば SomeClass.share... ここまでは補完しないが、SomeClass.sharedInstance.local.. ここまで来ると補完できる。
インスタンス作成 (1)new
お馴染みの alloc/init の代わりに new が使える。SomeClass* obj = [[SomeClass] alloc] init]; ↓ SomeClass* obj = [SomeClass new];. を使えばさらに短くサクっと書ける
SomeClass* obj = SompeClass.new;+new は NSObjectで定義されている(new = alloc+initとの説明がある)
This method is a combination of alloc and init.NSObject Class Reference
昔からObj-Cにあったメソッドだが、ARCになってから autoreleaseが不要になったので使いやすくなった。
(参考)
objective c - What is difference between new and [[alloc]init] in iOS? - Stack Overflow
インスタンス作成 (2)self
クラスメソッド内でselfはクラス自身を指す。なのでインスタンスの作成に使える。
+ (instancetype)sharedInstance { SomeClass* obj = [[self alloc] init]; : : }さらに . と new を使えばこう書ける。
SomeClass* obj = self.new;
instancetype については下記を参照
Objective-Cにおけるinstancetype型について - Takebayashi.Asia
配列・ディクショナリ作成
githubでソースコードを読んでて知った。mutableな配列・ディクショナリもサクっと書ける。NSDictionary* dict = @{} NSMutableDictionary* dict = @{}.mutableCopy;
NSArray* array = @[] NSMutableArray* array = @[].mutableCopy;
- - - -
多くはgithubで他の人のコードを読んでて知ったもの。コードを読むことはアルゴリズムを読み解くだけでなくコーディングのトレンドもわかるなー。