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 回答