0

これはNSStringを返すと思うでしょう:

NSString *class = NSStringFromClass([[_array objectAtIndex:([_array count] -2)] class]);

NSLog(@"Is a kind of NSString: %@", ([[_class classForCoder] isSubclassOfClass:[NSString class]])? @"Yes" : @"No");    

if ([class isEqualToString:@"MapViewController"]) {
    [_appDelegate.navController0 pushViewController:_userListController animated:YES];

} else {
    [_appDelegate.navController3 pushViewController:_userListController animated:YES];
}

しかし、何らかの理由でそうではなく、このクラッシュが発生します。

Is a kind of NSString: No
-[NSKeyValueObservationInfo isEqualToString:]: unrecognized selector sent to instance 0x6e69080

私がこれを試しても:

NSString *class = (NSString *)[[_array objectAtIndex:([_array count] -2)] class];

それでもNSStringが返されないため、次のクラッシュが発生します。

Is a kind of NSString: No
+[MapViewController isEqualToString:]: unrecognized selector sent to class 0xd4460

最後の例は少し難しいことはわかっていましたが、どちらからもNSStringが返されない理由についてはかなりわかりません。

4

1 に答える 1

2

メソッドの外部からNSStringの「クラス」にアクセスすると、あらゆる種類の奇抜なエラーが発生しました。だから私がしたことは少しretainステートメントを追加することでした:

NSString *class = [NSStringFromClass([[_array objectAtIndex:([_array count] -2)] class]) retain];

そして今、それは魅力のように機能しています。

于 2012-07-21T19:26:40.183 に答える