nsinvocationの便利さとハマりどころ
DESCRIPTION
2013/12/21 の yidev 資料TRANSCRIPT
NSInvocationの 便利さとハマりどころ
2013/12/21 Retty株式会社
櫻井 洋一郎(@saku2saku)
自己紹介•名前:櫻井 洋一郎 (@saku2saku) • お仕事:Retty株式会社 iPhoneアプリ、とんかつ担当
•言語:Obj-C, PHP, Java, etc… • 趣味:漫画・プログラミング
2
今までの製作
3
for iPhone for iPad for Web
注:コミッタではなく、 利用したシステム制作の経験です
NSInvocationって?
• メソッドをシグニチャからコールする仕組み
リフレクション?
photo by:Matthew Paulson http://www.flickr.com/photos/matthewpaulson/7634248262/
photo by:Ksayer1 http://www.flickr.com/photos/ksayer/5614813544/
http://art18.photozou.jp/pub/235/634235/photo/67541817_624.jpg
http://ecx.images-amazon.com/images/I/51MgH8Jmr3L._SS400_.jpg
バン はよ バン (∩`・ω・) バン はよ / ミつ /‾‾‾/ ‾‾\/___/
え?はやく本題にいけって??
NSInvocationの 便利さとハマりどころ
今日のサンプルコード
http://workshop.iphonework.biz/files/2013/12/NSInvocationSample.zip
アジェンダ1. NSInvocationでの呼び出しを経験しよう!
2. クラスメソッドを呼んでみよう!
3. 引数を渡してみよう!
4. 返り値を取得してみよう!
5. 最後の難関?!(ココが本題)
まとめ• NSInvocationの使い方についてお話しました
• 使うシーンは限られているはず
• アルゴリズムを見直した上、用法容量を守ってお使いください
• リーダブルコード!!!
御清聴ありがとう ございました
時間が余ったときの小ネタ
• システム間で時刻をやりとりする必要があってunixtimeにして受け渡ししていた
• MySQL(サーバ)とObjective-C(iPhone)で同じunixtimeを時刻に変換すると異なる日時が出た
原因と対処
• 原因は文字列の時刻を intValue せずに floatValue していたこと
• NSDate#timeIntervalSince1970の引数がNSTimeIntervalということでfloatにしていた
• intValue で整数にして渡したらうまくいった!