第6回 南東京iPhone開発者勉強会の参加メモ
「デザイン」を「パクる」ということ
@yopita_
@Yuumi3
- 並列処理
- 複数のCPUを使う
- 並行処理
- iOSのプロセス
- 排他制御
- デッドロック
- スレッド
- スレッドセーフ
- OS、システムが提供するライブラリーが全てスレッドセーフとは限らない
- Cのrandomはスレッドセーフじゃない
- iOSのスレッドはスレッド毎にNSMutableDictionaryを持っている
- スレッドセーフにする方法
- 状態のもつ変数をimmutableにする
- 再現性の低いバグが出やすい
- GCD
- C言語レベルでマルチスレッドに対応したプログラムを簡単にかけるようにした拡張
GoreData Migration
@Aoi_Wakusei
@shu223
- GKPeerPickerControllerを使う場合
- GameKitフレームワークをプロジェクトに追加
- 使わない場合
- できること/できないこと?
- ユーザー操作なしで接続確立
- Pickerを使用すると、接続確立時にユーザーにOK/NGを選んでもらう必要がある。
- できること/できないこと?
- どっかのピアと接続した状態で新しいのが繋がるか
- 複数ピアとの同時接続
- 最大16人まで?ピアモードでは無関係?未検証
- できる
- できること/できないこと?
- アプリ内でのON/OFF
- できない
- ピッカーは使える
- 非公開API
- BluetoothManager.framework
- デバイスonnいしてもらうまでピッカーを使用して、そのあとGKSessionだけ使用ってのはできない
- peesWithConnectionsStateをポーリングして、「状態変化が起きているか」は調べられる
- ただoffだから起きないのか周りいに接続相手がいないからかはわからない
- アプリ内でのON/OFF
- Notification
- BluetoothAvailabilityChangedNotification
- on/off検知には使えない
- BluetoothPowerChangedNotification
- on/offが切り替わったタイミングで飛んでくる
- もしかしたらon/off検知はできるかも
- BluetoothAvailabilityChangedNotification
- AndroidとのBluetooth通信
- できない
- iPhone側がGameKit同士でしか接続できないため
- Wi-Fiとの干渉
- 問題:BTを使用しているとWi-Fiの速度が遅くなる
- 原因:GameKitがWi-Fiを使用している(両方が有効な場合、フレームワークが勝手にWi-FiかBTかを選ぶ)
- 対策:Wi-Fi接続時にはGKSessionを無効に(available=NO)する
- GKSessionインスタンスを使い回す場合
- そおもそもGKSessionインスタンスを作りなおせば問題ない
- まとめ
- ユーザーにはバッテリーを喰うと思われている
- アプリからon/offする手段がない
- on/off検知できない
- Androidと接続できない