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

9,159 views
9,687 views

Published on

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

0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
9,159
On SlideShare
0
From Embeds
0
Number of Embeds
4,136
Actions
Shares
0
Downloads
12
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

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

  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__を使うなどいろいろあるが、 むやみに使ってもゴチャゴチャするだけ • 複数人で開発するときやみんなが使うライブラリな どで効果的

×