2

実行ループに関するスレッド プログラミング ガイドに従って、デモを作成しようとしています。NSPortDelegate の- (void)handlePortMessage:(NSPortMessage *)portMessage;メソッドを実装すると、エラーが表示されます。

インスタンスメッセージのレシーバータイプ「NSPortMessage」は前方宣言です

したがって、「Foundation/NSPortMessage.h」でインポートしようとすると、次のようになります。

Foundation/NSPortMessage.h ファイルが見つかりません。

では、iOS で NSPortMesssage を使用できるのだろうか?

4

2 に答える 2

2

NSPortMessageiOSのドキュメントには記載されていないようですので、おそらくプライベートAPIです。NSPortMessageXcodeを使用しようとすると、おそらく前方宣言が原因で、Xcodeのコード補完が実行されます。ただし、Xcodeにその定義を表示するように依頼NSPortMessageすると、シンボルが見つからないと表示され、プライベートAPIであることを確認できます。

このクラスはiPhone4sのObjective-Cランタイムに存在するため、デバイス上にあります。ただしNSPortMessage、iOSサンドボックスのセキュリティに反すると思われるプロセス間通信を許可します。おそらく、スレッド間通信では機能します。

私は確かに、AppStore向けのアプリでそれを使用しようとはしません。

于 2012-09-12T09:01:53.163 に答える
0

分散オブジェクト プログラミング ガイドの iOS バージョンと特定の API も非推奨になっているため、ポートベースの入力ソースに関連するすべてのものを iOS 開発に使用することはお勧めできません。ただし、Core Foundation 関数を使用してスレッド間で通信するためのポートベースのチャネルを設定することは、依然として利用可能な選択肢です。

于 2014-04-05T07:01:21.200 に答える