0

これをオブザーバーとして使用しています:

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
      selector:@selector(newConnection:)
       name:NSFileHandleConnectionAcceptedNotification
         object:nil];

これは呼び出されますが、アプリがクラッシュすると、このメッセージが表示されます

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CALayerArray newConnection:]: unrecognized selector sent to instance 0x76aed70'

これは、現在空の newConnection ハンドラです。

- (void)newConnection:(NSNotification*)notification
{
}

.hファイルでも正しく宣言されています...

これは通知を呼び出しているコードです

 socketPort = [[NSSocketPort alloc] initWithTCPPort:portNumber];
    int fd = [socketPort socket];
    fileHandle = [[NSFileHandle alloc] initWithFileDescriptor:fd
                                    closeOnDealloc:YES];
...
[fileHandle acceptConnectionInBackgroundAndNotify];

編集:上記のすべては、私が作成したクラスにあります。newConnection を除くすべてがこの関数内にあります。

- (id)initWithPortNumber:(int)pn delegate:(id)dl
{
if( self = [super init] ) {
...
}

そして、私はこのファイルをviewControllerで次のように呼び出しました:

    SimpleHTTPServer *server= [[SimpleHTTPServer alloc]initWithPortNumber:80 delegate:self];

解決策:
問題は次のとおりです。アーク システムが原因で、ビューの割り当てが解除されました
。[fileHandle acceptConnectionInBackgroundAndNotify]; 検出されたループは実際にはビューをアイドル状態として処理し、自動的に割り当てを解除したので、空のメソッドにつながるループを毎秒実行する小さなタイマーを作成しました。それを修正しました。

4

2 に答える 2

1
于 2013-08-25T13:50:42.030 に答える
0

問題は次のとおりです。アークシステムが原因でビューの割り当てが解除されました[fileHandle acceptConnectionInBackgroundAndNotify]; 検出されたループは実際にはビューをアイドル状態として処理し、自動的に割り当てを解除したので、空のメソッドにつながるループを毎秒実行する小さなタイマーを作成しました。それを修正しました。

于 2013-08-30T07:54:00.577 に答える