2009-07-08 4 views
1

Итак, я использую NSLog в объекте-C некоторое время для отладки, и я знаю, что он должен печатать на терминале все, что я помещаю в круглые скобки. По какой-то причине он просто прекратил печать на терминал, и я не уверен, как исправить эту ошибку. Мне было интересно, что другие люди предложили бы сделать, чтобы исправить эту проблему. Я включил только часть своего кода, потому что я не хочу отпугивать кого-то от ответа на эту простую (или, по крайней мере, я надеюсь, что это просто исправить) проблему. Когда я запускаю код, только два оператора, которые печатают «serverButton - Stage 1» и «serverButton - Stage 2 - Complete», но ничего другого между ними. FYI - (void) startServer находится в другом классе под названием «Сервер», и я сделал «сервер» указателем на этот класс.NSLog не печатается на терминале

-(IBAction)serverButton { 
NSLog(@"serverButton - Stage 1"); 
[server startServer]; 
NSLog(@"serverButton - Stage 2 - Complete"); 
} 

-(void)startServer { 
    NSLog(@"serverButton - Stage 1"); 

    memset(&hints, 0, sizeof hints); 
    hints.ai_family = AF_UNSPEC; // set to AF_INET to force IPv4 
    hints.ai_socktype = SOCK_DGRAM; 
    hints.ai_flags = AI_PASSIVE; // use my IP 

    if ((rv = getaddrinfo(NULL, MYPORT, &hints, &servinfo)) != 0) { 
     NSLog(@"ERROR: serverButton - Stage 1"); 
     fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv)); 
     serverError = 1; 
     NSLog(@"Error"); 
    } 
+0

Похоже, что в startServer у вас есть запись «serverButton - Stage 1», а затем некоторые ошибки при возникновении ошибки. Итак, позвольте мне получить это прямо следует печать (если ошибки не возникнет): serverButton - Stage 1 serverButton - Этап 1 serverButton - Этап 2 - Полная И в настоящее время он не печатает второе сообщение? – Solmead

ответ

2

Добавить проверку, чтобы убедиться, что сервер не равен нулю, прежде чем вы вызовете startServer, если он был ник, тогда ничего не получится, и никакая ошибка не будет сгенерирована.

+0

Извините, я просто понял, что происходит. Сегодня утром я вывел код из своего класса и назвал его напрямую. Во-первых, в этом не было ничего плохого, и он делал то, что должен был делать ..., в котором сидел сервер и ожидал сообщения от клиента. Я думаю, это была комбинация моего предположения, что мой код был неправильным, когда это было не так, и опаздывал на ночь. Спасибо за вашу помощь! –

0

Вы говорите:

FYI - (Недействительными) StartServer в другом классе под названием «Сервер», и я сделал «сервер» указатель на что указанный класс.

Если я прочитал это право, ваша server переменная фактически указывает на класса, например, так:

Class server = [Server class]; 
... 
NSLog(@"begin"); 
[server startServer]; 
NSLog(@"end"); 

Если это так, то ваш метод startServer должен быть классом метод:

+ (void)startServer { 
    NSLog(@"hello!"); 
} 

Если это не так, можете ли вы отправить немного больше кода? В частности, будет полезна часть, в которой вы назначаете эту переменную server.

0

Похоже, проблема заключается не в NSLog, а в том, что startServer фактически не отправляется на приемник, как вы думаете.

0

Если NSLog не печатает на терминале (объясните, что такое терминал). Я предполагаю, что терминал - это консоль отладчика Xcode. Затем вам нужно проверить Console.app, напечатано ли оно там.

В новой версии Xcode нет этой проблемы.

Смежные вопросы