Upload
hiroyuki-fujikawa
View
397
Download
0
Embed Size (px)
DESCRIPTION
非常に古い資料です。 NSCoderのサンプルが入っているので、UIState Preservationで参考になるかもしれないから今更あげておく。
Citation preview
InterfaceBuilderつづきかいた人
Hiroyuki-Fujikawa.(cqa02303)
12年11月4日日曜日
今日のお題
まとめる
あける
ピコる
12年11月4日日曜日
今日のお題
まとめる … 今回の動機。
あける
ピコる
12年11月4日日曜日
まとめる
InterfaceBuilderの定義ファイル(xib)って沢山出来ちゃってウザイよね?
12年11月4日日曜日
例えばUITableView
UITableViewとUITableViewCellの2ファイル
Cellは複製が必要(20個程度~)
ファイルを分けると管理が面倒
12年11月4日日曜日
複製のアプローチ
案1)xibの展開方法を模倣してキャッシュ
案2)展開済みのオブジェクトをコピー
12年11月4日日曜日
xib⇒UIView
loadNibNamed:owner:options:
詳細不明だけど、オブジェクトが得られる
呼び出す都度、ファイル読み込み?
12年11月4日日曜日
今日のお題
まとめる
あける … ファイルの構造を確認する
ピコる
12年11月4日日曜日
あける
IBが出力するものについて調べてみる
まずはProjectにあるxibと、Bundleの何か
12年11月4日日曜日
xibの中身
xmlファイル
source的なファイル
buildしたらnibになる
12年11月4日日曜日
nibの中身
NSPropertyListSerializationでNSDictionary化
辞書の中身はxibと同じ様なツリー構造
12年11月4日日曜日
nibを読む
NSDictionaryを展開してみた
12年11月4日日曜日
nibを読む
NSCFType大杉
順序に意味がある
12年11月4日日曜日
あきらめた
12年11月4日日曜日
今日のお題
まとめる
あける
ピコる … コピーして使うことにします
12年11月4日日曜日
ピコる
ツリー構造のNSObjectを複写できるよ。
[NSKeyedArchiver archivedDataWithRootObject:];
[NSKeyedUnarchiver unarchivedObjectWithData:];
UIKitのviewツリーなら大体OK
12年11月4日日曜日
ピコってみた
なんかおかしい
カスタムClassのIBOutletがnilのまま
NSCoding protocolを実装する必要があるよ- (id)initWithCoder:(NSCoder *)decoder- (void)encodeWithCoder:(NSCoder *)encoder
12年11月4日日曜日
NSCodingProtocol実装
複写してnib展開時と同じ状態を作る
IBOutletの保存だけ行うことに
12年11月4日日曜日
NSCodingProtocol利用
cell生成行だけ変更元データだけキャッシュしてます。
12年11月4日日曜日
NSCodingProtocol利用
元データはviewDidLoadで作成
awakeFromNibの中ではコピー元が未だ無い
12年11月4日日曜日
結果
xibファイルを1つにまとめられる
コード量が(けっこう)増える
速度差はほとんど無し
...あれ?
12年11月4日日曜日