16
クラス・メソッド・定数・変数 宣言時に使えそうなものまとめ iOS_LT #12 大西智也

クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

Embed Size (px)

DESCRIPTION

http://tomoyaonishi.hatenablog.jp/entry/2014/07/01/メソッド、クラス、変数、定数宣言時に使えそう

Citation preview

Page 1: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

iOS_LT #12

大西智也

Page 2: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

自己紹介

• iOS開発歴約3年

• ツイート専用アプリ「FasPos」:累計5万DL

• その他位置情報ログアプリなどいくつか

Page 3: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

• クラス・メソッド・定数・変数宣言に使えそうなものをまとめた

!

• たくさんあるが自分でこれは使える!とおもったものだけ

Page 4: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

NS_CLASS_DEPRECATED_IOS

• 指定したOSバージョンからそのクラスを非推奨にする

NS_CLASS_DEPRECATED_IOS(7_0, 7_1) @interface TestClass : NSObject !@end

iOS7.0まではOK、iOS7.1では非推奨

Page 5: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

NS_CLASS_AVAILABLE_IOS

• 特定のOSバージョンからそのクラスを使えるようにする

NS_CLASS_AVAILABLE_IOS(7_1) @interface TestClass : NSObject !@end

Page 6: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

NS_AVAILABLE_IOS

• クラス、メソッド、定数を指定したOSバージョンから使えるようにする

@interface TestClass : NSObject !- (void)method NS_AVAILABLE_IOS(7_1); !@end

Page 7: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

NS_DEPRECATED_IOS

• クラス、メソッド、定数を指定したOSバージョンから非推奨にする

FOUNDATION_EXPORT CGFloat const kTestClassConstant NS_DEPRECATED_IOS(6_0, 7_0);

Page 8: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

NS_UNAVAILABLE

• クラス、メソッド、定数を使えなくする

@interface TestClass : NSObject !- (void)unavailableMethod NS_UNAVAILABLE; !@end

Page 9: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

NS_REQUIRES_SUPER

• サブクラスでオーバライドした際にスーパークラスのメソッドを呼ぶようにする

@interface TestClass : NSObject !- (void)overrideMethod NS_REQUIRES_SUPER; !@end

Page 10: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

NS_REQUIRES_NIL_TERMINATION

• 可変長の引数の最後に必ずnilを指定するようにする

@interface TestClass : NSObject !- (void)method:(NSString *)first, ... NS_REQUIRES_NIL_TERMINATION; !@end

Page 11: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

NS_ENUM

• 定数を列挙する

typedef NS_ENUM(NSUInteger, TestClassOptions) { TestClassTypeA, TestClassTypeB, TestClassTypeC, TestClassUnknown = NSUIntegerMax };

Page 12: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

NS_OPTIONS

• ビット演算によるオプションを列挙する

typedef NS_OPTIONS(NSUInteger, TestClassOptions) { TestClassOptionsNone = 0, TestClassOptionsA = 1 << 0, TestClassOptionsB = 1 << 1, TestClassOptionsC = 1 << 2, TestClassOptionsAll = A | B | C };

Page 13: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

instancetype

• 返り値のインスタンスの型がそのクラスであることをチェックする

@interface TestClass : NSObject !- (instancetype)init; !@end

Page 14: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

__unused

• 未使用であることを宣言する

static CGFloat const __unused kConstant = 10.0;

使わないけど統一性のために宣言しておきたい定数や 将来的に使うものにつけておくとワーニングがでない

Page 15: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

変数宣言時に使える

__strong

強参照でインスタンスが解放されないようにする__weak

弱参照で参照先が解放されたとき自動でnilをセットする

__blockブロックの中で書き換えできるようにする

__unsafe_unretained(非ARC)

参照先が解放されても自動でnilをセットせず、 retainもしないためクラッシュする可能性があることを示す

Page 16: クラス・メソッド・定数・変数宣言時に使えそうなものまとめ

おわり

• 他にも__attribute__を使うなどいろいろあるが、むやみに使ってもゴチャゴチャするだけ

• 複数人で開発するときやみんなが使うライブラリなどで効果的