Сбой с библиотекой SBJSON - PullRequest
       2

Сбой с библиотекой SBJSON

1 голос
/ 22 октября 2011

следующий код скопирован из библиотеки JSON Stig Brautaset - я удалил комментарии, чтобы быть более понятными.

@interface NSString (NSString_SBJSON)

- (id)JSONFragmentValue;
- (id)JSONValue;

@end

У меня сбой при звонке:

NSString *jsonString = [request responseString];
...
NSDictionary *results = [jsonString JSONValue];//here is the crash with invalid selector.

Я добавил это:

if (![jsonString respondsToSelector:@selector(JSONValue)]) 
{
   NSLog(@"fix this!!!\n");
}

и сообщение отображается. Есть ли у вас идеи, почему эта функция не вызывается?

Спасибо!

РЕДАКТИРОВАТЬ: Я скомпилировать JSON Framework как статическая библиотека. Вызов сделан в той же библиотеке. Когда я компилирую его как exe, он запускается без проблем.

1 Ответ

1 голос
/ 22 октября 2011

Необходимо связать статическую библиотеку и конечный исполняемый файл с помощью опции компоновщика -ObjC.

Метод -JSONValue реализован как категория в NSStringкласс в файле NSString+SBJSON.m файл.Из-за того, как динамическая среда выполнения работает в Objective-C, категории, определенные в статических библиотеках, не загружаются, пока вы не свяжетесь с флагом -Objc.Если категория не загружается, динамическое связывание завершается неудачно, и вы получаете страшное исключение «не отвечает селектору».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...