NSLog()
принимает строку формата NSString
в качестве первого аргумента и (необязательно) список переменных длины переменной для спецификаторов формата в строке формата после этого:
NSLog(@"RSSI: %c", RSSI);
То, что вы получили сейчас (NSLog(RSSI);
), просто неправильно. Он должен давать вам предупреждения компилятора, подобные этим:
warning: passing argument 1 of 'NSLog' makes pointer from integer without a cast
warning: format not a string literal and no format arguments
Вы должны всегда обращать внимание на предупреждения компилятора, а не игнорировать их. Особенно, когда ваша программа вылетает в той же строке, к которой относятся предупреждения, они должны быть для вас красным знаком того, что вы допустили ошибку.
Кроме того, я должен упомянуть, что NSLog()
работает очень похоже на printf()
. Два основных различия заключаются в том, что строка формата NSLog
должна быть строковым литералом Objective-C (@"string"
), а не стандартной строкой C char ("string"
), и что спецификатор формата для объекта - %@
. %@
заменяется строкой, возвращаемой путем вызова метода -description
для объекта, который будет напечатан.