构建控制台应用程序时,CocoaAsyncSocket的行为不符合预期

时间:2013-02-21 11:50:43

标签: objective-c macos cocoaasyncsocket

我正在尝试编写一个简单的客户端,它应该使用CocoaAsyncSocket连接到具有TCP的服务器。我有一个类MyClass被设置为CocoaAsyncSocket的委托,当构建一个“Cococa Application”(带有UI)时,这个类可以正常工作并连接到服务器并且正在调用didConnectToHost方法。

工作

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application
    self.my = [[MyClass alloc] init];

    [self.my connect];

}

但是,在使用下面的主文件构建控制台应用程序时,它不起作用。我只是想解雇这个课程并让它在后台运行。

无效

#import <Foundation/Foundation.h>
#import "MyClass.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        NSLog(@"Hello, World!");

        MyClass * my = [[MyClass alloc] init];

        [my connect];

        while(1) {
            NSLog(@"Nothing");
            sleep(1);
        }
    }
    return 0;
}

1 个答案:

答案 0 :(得分:3)

这不起作用,因为CocoaAsyncSocket依赖NSRunLoop运行,而sleep(1)一直在主线程上运行。或许替换你的无限循环:

[[NSRunLoop mainRunLoop] run];