У вас проблема с управлением памятью. [NSMutableArray arrayWithArray:]
предоставляет вам автоматически освобожденный объект в соответствии с рекомендациями Apple по управлению памятью.
В вашем первом тесте вы проверяете значение в некоторый момент перед тем, как объект будет освобожден. К тому времени, как прибыл вызов делегата из табличного представления, объект был освобожден, и память больше не существует.
Вам необходимо сохранить массив при его создании (и освободить его, когда закончите с ним).
Вы можете сделать это явно:
- (void)viewDidAppear:(BOOL)animated{
...
jsonKanji = [[NSMutableArray arrayWithArray:(NSArray *)[jsonDict valueForKey:@"kanji_name"]] retain];
...
}
Или создайте свойство и присвойте значение, используя свойство, которое будет обрабатывать само сохранение:
(Интерфейс)
@interface SearchKeyword : UIViewController {
....
@property (nonatomic, retain) INSMutableArray *jsonKanji;
...
@end
(реализации)
- (void)viewDidAppear:(BOOL)animated{
...
self.jsonKanji = [NSMutableArray arrayWithArray:(NSArray *)[jsonDict valueForKey:@"kanji_name"]];
...
}