そこで、Apple の PictureSharing/PictureSharingBrowser サンプルを使用してデータを送受信しています。これは、サーバー側で NSFileHandle を使用して、NSFileHandle の writeData メソッドを使用して画像を送信します。
NSFileHandle * incomingConnection = [[aNotification userInfo] objectForKey:NSFileHandleNotificationFileHandleItem];
[[aNotification object] acceptConnectionInBackgroundAndNotify];
[incomingConnection writeData:dataToWrite];
[incomingConnection closeFile];
大量のデータ (この場合は 1MB 相当のデータ) を送信するまでは、これでうまくいくようです。これを試みると、writeData メソッドの実行中にアプリケーションがハングします。クライアントはデータの読み取りを開始することさえせず、単に接続を開きますが、何も起こりません。(サーバーがすべてのデータを一度に送信する間、チャンクごとにデータを読み取ることになっています)。
どこかでデッドロックが発生していると推測していますが、どこかはわかりません。非同期を探してみました。NSFileHandleでチャックごとにデータチャックを書く方法を探したのですが、そのような方法が見つかりませんでした。
どんなガイダンスも役に立ちます!