Submit Search
objective-c propertyの属性について
10 likes
12,363 views
Hiroki Uemoto
objective-c propertyの属性についてまとめました。
Technology
Read more
1 of 24
Download now
Downloaded 13 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
More Related Content
PDF
F#+Erlangで簡単なシューティングゲームを作ってみている
pocketberserker
PDF
I phoneアプリ入門 第5回
Sachiko Kajishima
PDF
(きっと)あなたにも出来る!Hyperledger composer でブロックチェーンアプリを動かしてみた
K Kimura
PDF
BMXUG つきじ#4
K Kimura
PDF
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
karupanerura
PDF
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
azuma satoshi
PPT
Impractical Introduction of Boost Spirit Qi [PPT]
yak1ex
PPT
第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
Hiromu Shioya
F#+Erlangで簡単なシューティングゲームを作ってみている
pocketberserker
I phoneアプリ入門 第5回
Sachiko Kajishima
(きっと)あなたにも出来る!Hyperledger composer でブロックチェーンアプリを動かしてみた
K Kimura
BMXUG つきじ#4
K Kimura
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
karupanerura
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
azuma satoshi
Impractical Introduction of Boost Spirit Qi [PPT]
yak1ex
第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
Hiromu Shioya
Viewers also liked
(9)
PDF
Objective-Cのメモリ管理
susan335
PDF
Objective-CのBlocksの循環参照に関する僕なりのベストプラクティス
Naoyuki Kataoka
PDF
Swiftとメソッドのアレコレ
Nobuo Saito
PDF
最近遊んだ Wii Uの 3つのソフトの感想
teapipin
PPTX
これからの時代に! パソコン離れの中のパソコン選び
teapipin
PDF
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
teapipin
PDF
VC「もしかして...」Model「私たち...」「「入れ替わってるー!?」」を前前前世から防ぐ方法
Kenji Tanaka
PDF
最強オブジェクト指向言語 JavaScript 再入門!
Yuji Nojima
PDF
テストを書こう、Unity編
Hiroto Imoto
Objective-Cのメモリ管理
susan335
Objective-CのBlocksの循環参照に関する僕なりのベストプラクティス
Naoyuki Kataoka
Swiftとメソッドのアレコレ
Nobuo Saito
最近遊んだ Wii Uの 3つのソフトの感想
teapipin
これからの時代に! パソコン離れの中のパソコン選び
teapipin
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
teapipin
VC「もしかして...」Model「私たち...」「「入れ替わってるー!?」」を前前前世から防ぐ方法
Kenji Tanaka
最強オブジェクト指向言語 JavaScript 再入門!
Yuji Nojima
テストを書こう、Unity編
Hiroto Imoto
Ad
objective-c propertyの属性について
1.
objective-c propertyの属性について @jazzsasori
2.
ツッコミ歓迎
3.
株式会社REVENTIVE CTO 植本 裕紀
と申します。 @jazzsasori ↓ Github Facebook Linkedin Twitter
4.
注)ARCが前提です
5.
まずpropertyの宣言 【文法】 @property (オプション) 型
プロパティ名; NSStringの場合、こんな感じ @property (nonatomic, weak) NSString *string;
6.
いや、そもそも @propertyって何じゃい。 ってか@って何じゃい。
7.
objective-c で @
がつくものは コンパイラディレクティブ。 コンパイラディレクティブ? ↓ コンパイラへ特定の命令を前処理す るように指示するもの。
8.
@propertyを宣言すると何が 嬉しい? @property (nonatomic, weak)
NSString *string; ○ ゲッタ/セッタ/メンバ変数が作られます。 - (void)setString:(NSString *)string; - (NSString *)getString; メンバ変数 _string
9.
propertyを.hで宣言する ViewController.h: @interface ViewController :
UIViewController @property (nonatomic, weak) NSString *string; @end ○ 宣言するとアクセサとメンバ変数が作られ該当ク ラスのインスタンス変数からアクセスできます。
10.
propertyを.mで宣言する ViewController.m: @interface ViewController () @property
(nonatomic, weak) NSString *string; @property (nonatomic, weak) IBOutlet UIView *customView; @end @implementation ViewController ∼ @end ○ 宣言するとアクセサとメンバ変数が作られるのは.hと同様ですが、 ViewControllerをインスタンス化して扱う場合にこのpropertyにはアク セスできません。NSStringの例よりは、IBOutletなど、そのクラス内で しかアクセスする必要のないpropertyを宣言して使うケースが多いです。
11.
今日のお話 @property (オプション) 型
プロパティ名; ↑ オプションのお話をします。
12.
propertyのオプションはこんなにあるぞ 種類 メソッド名指定 読み書き属性 値の設定方法 アトミック性 オプション getter=ゲッタ名 setter=セッタ名 readonly readwrite assign retain unsafe_unretained strong weak copy nonatomic 説明 ゲッタ/セッタメソッドの名前 を明示的に指定 読み取りのみ 読み書き(デフォルト) 代入によって値を設定(デフォルト) オブジェクトを保持して設定 assignと同じ(ARC用) retainと同じ(ARC用) 弱い参照(ARC用) オブジェクトをコピーして設定 排他実行されない
13.
?
14.
説明しよう!
15.
getter, setter @property (setter=setValue:)
int count; setterを明示しない場合、setCount: が宣言されます。 self.count = 1; とした場合、setValueが呼び出され ます。
16.
readonly @property (readonly) int
count; setterが宣言されません。さらにこのままだと自分自身も書き換えできません。 以下のようにして下さい。 // .h @interface Hoge @property (nonatomic, readonly) id value; @end ! // .m @interface Hoge () @property (nonatomic, readwrite) id value; @end ※ readwriteは省略可能
17.
weak @property (weak) id
obj; 参照先のオブジェクトが破棄されたら自動でnilが代入 される(ゼロ化 zeroing)。__weak修飾子を持った 変数と同様のふるまい。オーナーシップを持たないの で知らないうちに開放されてしまう。 IBOutlet、delegate を扱う変数はコレがオヌヌメ。
18.
__unsafe_unretained, assign @property (__unsafe_unretained)
id obj; @property (assign) id obj; ゼロ化 をしないweak変数。オーナーシップを持たな い。不要になった時点で自前で解放する。 ※ iOS 4 との互換性のためのオプションなので覚え る必要無いと思います。
19.
strong @property (strong) id
obj; オーナーシップを持つ強い参照。保持の循環(retain cycle)が発生しやすいので注意。勝手に解放される と困るオブジェクトに使う。不要になった時点で deallocで自前解放する。
20.
copy @property (copy) id
obj; オブジェクトのコピーを保持する。strongと同様、 オーナーシップを持つ強い参照。不要になった時点で deallocで自前解放する。
21.
nonatomic @property (nonatomic) id
obj; atomicとはマルチスレッドで動作した時、排他的な動作を して、他のスレッドの干渉を受けないことを保証する事。 デフォルトはatomic。 atomicである必要がなければ必ずnonatomicを指定するこ と。atomicにした場合、排他処理のためパフォーマンスが 下がります。 http://d.hatena.ne.jp/masakih/20120325/1332658392
22.
では、まとめ
23.
まとめ • 必然性が無い限りnonatomic指定。 • strong 指定したらその足でdeallocで解放しに 行こう。 • IBOutlet は
weak • delegate も weak
24.
ご清聴ありがとうございました。
Download