Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如果我激活断点,应用程序将运行,否则将失败_Ios_Objective C_Sockets - Fatal编程技术网

Ios 如果我激活断点,应用程序将运行,否则将失败

Ios 如果我激活断点,应用程序将运行,否则将失败,ios,objective-c,sockets,Ios,Objective C,Sockets,我有一个应用程序,它使用套接字向服务器发送登录信息,并以联系人列表的形式接收响应。这是处理服务器响应的主要方法: -(void) stream:(NSStream*)theStream handleEvent:(NSStreamEvent)streamEvent { switch(streamEvent) { case NSStreamEventOpenCompleted: NSLog(@"Stream opened"); break; ca

我有一个应用程序,它使用套接字向服务器发送登录信息,并以联系人列表的形式接收响应。这是处理服务器响应的主要方法:

-(void) stream:(NSStream*)theStream handleEvent:(NSStreamEvent)streamEvent {

switch(streamEvent) {

    case NSStreamEventOpenCompleted:
        NSLog(@"Stream opened");
        break;

    case NSStreamEventHasBytesAvailable:
        if(theStream == inputStream) {
            uint8_t buffer[8196];
            int len;
            while([inputStream hasBytesAvailable]) {
                len = [inputStream read:buffer maxLength:sizeof(buffer)];
                if(len>0) {
                    NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSUTF8StringEncoding];

                    if(output != nil) {
                        NSLog(@"server said: %@", output);

                        id jsonOutput = [self createJsonFromString:output];
                        if([[jsonOutput objectForKey:@"msg_type"] isEqualToString:@"LoginResponse"])
                        {
                            [self sendMessage:[self createAddressBookRequestJsonData]];

                        } else if ([[jsonOutput objectForKey:@"msg_type"] isEqualToString:@"GetAddressBookResponse"])
                        {
                            id contactList = [jsonOutput objectForKey:@"contact_list"];
                            for(id contactListItem in contactList)
                            {
                                XYZAddressBookEntry *newEntry = [[XYZAddressBookEntry alloc] init];
                                newEntry.firstName =  [contactListItem objectForKey:@"FirstName"];
                                newEntry.lastName =  [contactListItem objectForKey:@"LastName"];
                                newEntry.displayName =  [contactListItem objectForKey:@"DisplayName"];
                                newEntry.softphoneNumber =  [contactListItem objectForKey:@"SoftphoneNumber"];
                                newEntry.homeNumber =  [contactListItem objectForKey:@"HomeNumber"];
                                newEntry.mobileNumber =  [contactListItem objectForKey:@"MobileNumber"];
                                newEntry.businessNumber =  [contactListItem objectForKey:@"BusinessNumber"];
                                newEntry.name =  [contactListItem objectForKey:@"Name"];
                                newEntry.phoneAddress =  [contactListItem objectForKey:@"PhoneAddress"];
                                [self.entryList addObject:newEntry];
                            }
                           [self.tableView reloadData];
                        }

                    }

                }
            }
        }
        break;

    case NSStreamEventHasSpaceAvailable:
        break;

    case NSStreamEventEndEncountered:
        [theStream close];
        [theStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
        break;

    case NSStreamEventErrorOccurred:
        NSLog(@"Can not connect to the host!");
        break;

    default:
        NSLog(@"Unknown event:");
}    }
我总是在日志中获得正确的输出,所以一切都很顺利,但是如果我没有在NSLog(@“服务器说:%@”,输出)之后设置断点,它将不会进入if-else代码块。我错过了什么


顺便说一句,我是这方面的新手,两周前才开始使用objective-c。

让我们添加{}在这种情况下,有时它会弄乱,可能会为每个事件放置日志,以确保它们都按照您的预期发生。PS我强烈建议使用库来进行套接字通信。是的,CocoaAsyncSocket将使您的生活更轻松。您也可以使用AFNetworking-。代码如下-`uint8_t buffer[8196];`只是要求一个crash@PokeyMcPokerson谢谢你的链接。这个库非常容易使用。