Upload
tomoya-onishi
View
4.422
Download
0
Embed Size (px)
DESCRIPTION
http://tomoyaonishi.hatenablog.jp/entry/2014/07/01/メソッド、クラス、変数、定数宣言時に使えそう
Citation preview
クラス・メソッド・定数・変数宣言時に使えそうなものまとめ
iOS_LT #12
大西智也
自己紹介
• iOS開発歴約3年
• ツイート専用アプリ「FasPos」:累計5万DL
• その他位置情報ログアプリなどいくつか
• クラス・メソッド・定数・変数宣言に使えそうなものをまとめた
!
• たくさんあるが自分でこれは使える!とおもったものだけ
NS_CLASS_DEPRECATED_IOS
• 指定したOSバージョンからそのクラスを非推奨にする
NS_CLASS_DEPRECATED_IOS(7_0, 7_1) @interface TestClass : NSObject !@end
iOS7.0まではOK、iOS7.1では非推奨
NS_CLASS_AVAILABLE_IOS
• 特定のOSバージョンからそのクラスを使えるようにする
NS_CLASS_AVAILABLE_IOS(7_1) @interface TestClass : NSObject !@end
NS_AVAILABLE_IOS
• クラス、メソッド、定数を指定したOSバージョンから使えるようにする
@interface TestClass : NSObject !- (void)method NS_AVAILABLE_IOS(7_1); !@end
NS_DEPRECATED_IOS
• クラス、メソッド、定数を指定したOSバージョンから非推奨にする
FOUNDATION_EXPORT CGFloat const kTestClassConstant NS_DEPRECATED_IOS(6_0, 7_0);
NS_UNAVAILABLE
• クラス、メソッド、定数を使えなくする
@interface TestClass : NSObject !- (void)unavailableMethod NS_UNAVAILABLE; !@end
NS_REQUIRES_SUPER
• サブクラスでオーバライドした際にスーパークラスのメソッドを呼ぶようにする
@interface TestClass : NSObject !- (void)overrideMethod NS_REQUIRES_SUPER; !@end
NS_REQUIRES_NIL_TERMINATION
• 可変長の引数の最後に必ずnilを指定するようにする
@interface TestClass : NSObject !- (void)method:(NSString *)first, ... NS_REQUIRES_NIL_TERMINATION; !@end
NS_ENUM
• 定数を列挙する
typedef NS_ENUM(NSUInteger, TestClassOptions) { TestClassTypeA, TestClassTypeB, TestClassTypeC, TestClassUnknown = NSUIntegerMax };
NS_OPTIONS
• ビット演算によるオプションを列挙する
typedef NS_OPTIONS(NSUInteger, TestClassOptions) { TestClassOptionsNone = 0, TestClassOptionsA = 1 << 0, TestClassOptionsB = 1 << 1, TestClassOptionsC = 1 << 2, TestClassOptionsAll = A | B | C };
instancetype
• 返り値のインスタンスの型がそのクラスであることをチェックする
@interface TestClass : NSObject !- (instancetype)init; !@end
__unused
• 未使用であることを宣言する
static CGFloat const __unused kConstant = 10.0;
使わないけど統一性のために宣言しておきたい定数や 将来的に使うものにつけておくとワーニングがでない
変数宣言時に使える
__strong
強参照でインスタンスが解放されないようにする__weak
弱参照で参照先が解放されたとき自動でnilをセットする
__blockブロックの中で書き換えできるようにする
__unsafe_unretained(非ARC)
参照先が解放されても自動でnilをセットせず、 retainもしないためクラッシュする可能性があることを示す
おわり
• 他にも__attribute__を使うなどいろいろあるが、むやみに使ってもゴチャゴチャするだけ
• 複数人で開発するときやみんなが使うライブラリなどで効果的