有谁能告诉我为什么这种比较会让我的应用程序冻结并崩溃?
NSArray *viewControllerArray = [controlFromMap.navigationController viewControllers];
NSUInteger parentViewControllerIndex = [viewControllerArray count] - 3 // or - whatever;
NSLog(@"Parent view controller: %@", [viewControllerArray objectAtIndex:parentViewControllerIndex]);
if([[[viewControllerArray objectAtIndex:parentViewControllerIndex]stringValue] isEqualToString: @"FromAddressController"]){
_mapView.showsUserLocation = NO;
}
else{
_mapView.showsUserLocation = YES;
}
答案 0 :(得分:1)
如果你添加:
NSLog(@"parentViewControllerIndex: %d", parentViewControllerIndex);
行后:
NSUInteger parentViewControllerIndex = [viewControllerArray count] - 3;
您在控制台中看到了什么价值?
答案 1 :(得分:1)
[viewControllerArray objectAtIndex:parentViewControllerIndex]应返回UIViewController子类的实例。确保它响应-stringValue或(假设FromAddressController是类名)使它成为:
if([[viewControllerArray objectAtIndex:parentViewControllerIndex] class] == [FromAddressController class])
答案 2 :(得分:0)
此外,这一行:
if([[[viewControllerArray objectAtIndex:parentViewControllerIndex]stringValue] isEqualToString: @"FromAddressController"]){
对我来说很可疑。
我检查了documentation,而UIViewController
类似乎没有-stringValue
方法。所以你可能会得到一个无法识别的选择器异常,你的应用程序就会崩溃。
也许您的意思是nibName
而不是stringValue
?