ObjCがサクっと書けるコーディングTips

2013年4月21日日曜日 | Published in | 1 コメント

このエントリーをはてなブックマークに追加

最近よく使っている省略記法を紹介する。これらを使うとなんとなく気分がいい。

クラスメソッドの . (ドット)アクセス


実はクラスメソッドも .(ドット)表記が可能になった。
[SomeClass sharedInstance]
     ↓
SomeClass.sharedInstance
当然ながらさらにメソッドも重ねられる。

SomeClass.sharedInstance.localName
Xcodeではクラスメソッドの.表記は補完が効かないのが難点。ただしそれ以降のメソッドは補完してくれる。
例えば 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で他の人のコードを読んでて知ったもの。コードを読むことはアルゴリズムを読み解くだけでなくコーディングのトレンドもわかるなー。

コメント

  1. 匿名
    2014年9月3日 14:24

    Wonderful tips!
    参考になります^^

  2. 匿名
    2014年9月3日 14:24

    Wonderful tips!
    参考になります^^

Leave a Response

人気の投稿(過去 30日間)