第2回 iphone_dev_jp 東京iPhone/Mac勉強会 iOS/Macに関する勉強会です
ハッシュタグ :#idevjphttp://atnd.org/events/28693
資料 ※おそらく全部
http://slidrs.net/sessions/13
会場についての諸注意・説明
@bash0C7さん
こしばさん。
パンゲア会場
建物の写真はOK
(トイレの場所、無線LANの設定、自販機の使い方など)
UITableViewハック
@fladdictさん
UITableViewHack.pdf
・UITableViewのハック。
UITableViewHack
UITableViewを拡張は?
→CoverFlowできるか?。
・データに互換性がもたせられる。
・Cellの管理棟を実装する必要がない。
1. 水平で作る
UITableView.transformを左に90度(-90度)回転
CellのContentViewのTransfomを+90度回転
水平方向のTableViewが完成
☆2,3行数でできる
2. セルのカスタマイズ
フワッフワッ
Cellの作成場所
CellのPrepareForResse
TableViewのスクロール
☆重要な関数を作成
中央からセルまでの距離を相対値で計算する
評価関数
・インプット:
セルのセンターからの距離(-1〜1)
・アウトプット
センターからの距離に応じてとるべきscaleを返す
センターからの距離の応じて取るべき色を返す
→位置、回転、スケール、透明度、色
位置に応じて色が変換される
scale for distance
グラフとスケールと色を組み合わせる。
選択の反転は後で消す。
関数のグラフ次第で変形できる。
ContentView?セル自体?を回転で実装を切り分けられる。
ベジエ曲線や二次曲線の組み合わせ
TableViewの関数を呼ぶだけで削除や、追加ができるので楽!
アニメーションのオーバーライドが自分でやる。
@fladictでgithubへのせる
Q. 各アイテムに対してのレイヤーが違うが、どちら側が上になるかを制御できるのか?
A. 配列につっこんだりして〜〜Z軸の変形ができる。
ARCのベストプラクティスを考える
@k_katsumiさん
idevjp_kishikawa_ARC.pdf
ARC & Blocks
新しい技術をガンガン使って試した。
循環参照に気をつける。blockやweaksにする。
→本などで
やってみないと循環参照になるのがよくわからない。
理屈だけではわからないことが多い。
Appleのドキュメントもあるが、体型だって書かれたのがない。
memory管理ドキュメントは2011年など古い
Appleのドキュメントよりも詳しい 坂本さんのエキスパートObjective-C
Clangの公式ドキュメント
Automatic Reference Counting
http://clang.llvm.org/docs/AutomaticReferenceCounting.html
ninjinkunさん 関西で発表
メモリ管理を自動化数r
(静的解析にヨテコンパイラが自動的に保持開放のコードを挿入する)
ARCのはバイナリの互換性がある
→GCオンやオフでビルドしされたバイナリに互換性がない
Weak references以外はMacOS X v10.6とiOS 4でも使える
CのとこやARCオフするなど
→JSONキットとか、今後対応しない奴
ARCはコンパイルオプションでオン・オフできる
ARCオンでBlocksを使う場合、循環参照を作りやすい
ブロック内でブロックの呼び出し元を参照しているかどうか
ブロックをコピーしているかどうか
ブロックの呼び出し元のオブジェクトを保持しているかどうか
ブロック内でselfを参照しているかどうか→一番気を使わなければいけない
ブロック内でブロックの呼び出し元を参照している場合
ASIHTTPRequest
__block 記憶指定子
ARC無効なら_block指定子があるオブジェクトがretainされない
ARCオンとARCオフの場合で挙動が変わる
どちらでもretain(保持)されるように
request = nil
ARCあり
__weak
◯プロクティス1 結果をブロックの引数で返す
ブロックをコピーしているかどうか? ARC×
ブロックをコピーした場合、呼び出し元を参照する循環参照する
blocks+arcで使う方が間違えにくくするように、引数にする
◯プロクティス2 できるだけブロックをコピーしない
ARC◯
ブロックの呼び出し元のオブジェクトを保持しているかどうか
ブロック内でselfを参照しているかどうか
ブロックの呼び出し元を保持していてもブロックがコピーされないならキャプチャされた自動
ブロックの呼び出し元を保持していてもブロックがコピーされる場合は循環参照になる
◯解決方法
循環参照を避けるためにselfをローカル変数に代入してローカル変数を通してアクセスする
BlocksKitのUIKit拡張などコールバックでUIを更新する場合に循環参照を作りがち
Macの場合、Lion以上でも__weak指定のできないクラスがけっこうある(__unsage_unretainedを使う)
◯プロクティス4 delegateやtarget actionで実装することを検討する
Blocksの使い方は可読性とチームメンバーのり器量などいろいろなバランスを見極めて使い分けられるようにしたい
"クラスメソッド"にすると使う方法はいろいろ考えなくて楽 ARC◯
Build Phases>Compile
Enterキーを押します。
ダブルクリックではダメ。→バグ?
ASIHTTPRequest
AirPrintで遊んでみた
@cqa02303さん
・本がでる
・まとめ
@"_ipp._tcp" → Bonjour Printer
@"_ipp._tcp,universal" → AirPrint Printer
InterfaceBuilder嫌いがStoryboardを愛するようになった訳
@sonson_twitさん
研究系、画像処理
・Storyboard
チュートリアルなどはネットにある
Interface Builder
autoreleaseのバグ
Table Viewをstaticにしたら自前で書ける
つながってないViewもPushして呼び出せる。
クリックで遷移を作れる
identiferを使えばあとから呼び出せる
コードとの親和性
ON,OFFでchanged switchでdispatchしてTableViewを呼ぶことができる。
※昔はもっとテマだった
常にビジュアルプログラミングしなくてはならないというわけではない
抜け道がある
dynamic cell
Modalは下から出る
segue左右からパカっと出る
→dismissは自分で手で書く必要がある
application controllerを一度破棄されてしまう
Ibtool
ファイルを読み込ますと、タイトルにしてリストにしてくれる
Pythonで文字コードで。
UITableViewのコードが減る
StoryBoardではViewの使い回しができないので、共通の部品を使うにはInterfaceBuilder
自作UIコンポーネント入門
@cocoponさん
・XVim
https://github.com/JugglerShu/XVim
・CMPopTipView
https://github.com/chrismiles/CMPopTipView
・CMPopTipView読むぞ
PointDirectionUp
PointDirectionDown
createしたら必ず開放!
ImageI/O完全攻略
@studioshinさん
http://www.studioshin.com/iphone_dev/iphone_dev_ImageIO.pdf
http://www.studioshin.com/iphone_dev/ImageIOSample.zip
2008年
世界に2回目の将棋
アニメーションGIF
GIDQuickMaker
Xcode4.3対応
・ImageI/Oとは?
Mac OS X10.4で導入されたApplicationServicesフレームワーク
イメージ読み書きするためならUIImageとかがいい
画像のメタデータにアクセス
JPEGのExif
画像のピクセルデータに直接アクセス
・独自の画像フィルターの作成など
・反転処理
元
for(int i=0; i < bitmapByteCount; i+=4) { //ピクセルの加工ができる! *(pixelBuff+i+0) = *(ptr+i+0); // R *(pixelBuff+i+1) = *(ptr+i+1); // G *(pixelBuff+i+2) = *(ptr+i+2); // B } CGContextRelease(context); }
・反転した
for(int i=0; i < bitmapByteCount; i+=4) { //ピクセルの加工ができる! *(pixelBuff+i+0) = 255-*(ptr+i+0); // R *(pixelBuff+i+1) = 255-*(ptr+i+1); // G *(pixelBuff+i+2) = 255-*(ptr+i+2); // B *(pixelBuff+i+3) = *(ptr+i+3); // A } CGContextRelease(context); }
・1サンプルあたりのビット数
RGBAの32bitなら32などかく
4バイトずつ
NULL, NO, kCGRenderingIntentDefault
↑将来のためにNULLにしたり
CGImageDestinationCreateWithData
アニメーションGIFを表示するだけならUIWebViewに貼ってしまえばよい。
リッチテキストエディタについて
@cathandnyaさん
http://cathand.org/iphone_dev_jp_02
iphone_dev_jp_02.pdf
jsのexecコマンド
タップした位置をスクロール
ざっくり iOS × GAE 体験
@335gさん
くどうさん
https://github.com/335g/ZakkuriGAE
勉強会資料@335g.pdf
EA FIFA12 Club
・NSJSONSerialization(iOS5.0〜)
Python2.7(GAE)でJSONライブラリ使用可
表示して消すライブラリ。クラスメソッドで。
簡単!OpenGL ES2.0フラグメントシェーダー
@kamiyanさん
IBGLKit
C++で
OpenGLライブラリをObjective-Cでかいた。
vec2、vec4よくつかう
3Dならvec2とか
FragColor・・・最小出力先のカラー
u_alpha
dotは内積
いわゆる黄金本
洋書はオレンジの
Cameraの露出を制御する
@takiuchiさん
AVCaptureDevice
AE(露出)
使用したiPhoneをMacに出す奴
◯Reflaction
http://www.reflectionapp.com/
http://www.apptoiphone.com/2012/03/reflection-iphoneipadmacairplay.html
自動で明るさを決めてくれる機能か?
mixiのiOSアプリ開発
@k_kinukawa
衣川
UX
mixi 5人くらいiPhone
2名・・デザイナー
2名・・ディレクター
ろくろw
http://himasoku.com/archives/51704146.html
http://rikunabi-next.yahoo.co.jp/tech/docs/ct_s03600.jsp?p=002087
WebViewからネイティブ叩く
mixi Touchから
WebViewなので画像の添付ができない triaina
タイタンを倒したから。Titaniumを意識。
◯App Reviwers
Sinatraベース
https://github.com/punchdrunker/AppReviewViewer
コメント返しができる。
git使ってる。
CI・・・Jenkins
gitで変化があったら、自動テストを。自動テストGHUnit
1年に200回バージョンアップ
スクラムにハマっている。
・今後
もっと早いデリバリー 一ヶ月→2週間
ARC,Storyboard対応
スマートフォンの最適化
テスト・・・UIや非同期は書きにくい
なんでもViewコントローラーに書くのはやめよう。
gitはエンタープライズライセンスではない。
◯ライトニングトーク
WWDC前夜祭
6/1(金)
19:30〜
入口の近く
Ajito
@shu223