Нераспознанный селектор отправлен в экземпляр [NSCFString subarrayWithRange:] - PullRequest
7 голосов
/ 04 октября 2010

У меня есть следующий код, который производит эту ошибку. Я не могу понять, почему сообщение subarrayWithRange отправляется в строку? Когда это явно массив?

static const int kItemsPerView = 20;
NSRange rangeForView = NSMakeRange( page * kItemsPerView, kItemsPerView );

NSMutableArray *temp = [[APP_DELEGATE keysArray] mutableCopyWithZone:NULL]; 
NSArray *itemsForView = [temp subarrayWithRange:rangeForView];

for (int loopCounter = 0;loopCounter < r*c;loopCounter++){
    NSLog(@"%i: %@ ", loopCounter, [itemsForView objectAtIndex:loopCounter]);
}

Ошибка:

-[NSCFString subarrayWithRange:]: unrecognized selector sent to instance 0x6b071a0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: [NSCFString subarrayWithRange:]:

Спасибо

Ответы [ 2 ]

29 голосов
/ 04 октября 2010

Ошибки такого рода обычно связаны с управлением памятью. По сути, вы отправляете сообщение на адрес, который сейчас занят каким-либо другим объектом, поскольку предыдущий пользователь неожиданно исчез. Поскольку это адресное пространство может быть занято чем-либо, вы просто запрашиваете NSCFString что-то, на что он не отвечает.

Если вы остановите отладчик сразу после создания временного массива, что, по вашему мнению, будет назначено временному массиву? Я предполагаю, что что-то не так с тем, что возвращает -keysArray. Возможно, вы захотите перепроверить, как обрабатывается память во всем, что предполагается вернуть. По названию, я полагаю, ваш делегат приложения имеет массив с именем «keysArray» в качестве переменной экземпляра. Возможно, он не сохраняется должным образом при его создании или назначении?

4 голосов
/ 02 апреля 2012

Итак, у меня был этот.Я сделал что-то глупое.Я назначил UITextView строке вместо ее текстового свойства.т.е.:

myObj.txtbxThing = [NSString stringWithFormat:@"%@", stuffString];

вместо:

myObj.txtbxThing.text = [NSString stringWithFormat:@"%@", stuffString];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...