Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

14,398 views

Published on

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

  • Be the first to comment

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

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

×