我正在制作一个应用程序,如果网页未加载,则会出现错误并返回上一屏幕。但是,这样做之后,在所有代码之后,获得了一个未声明的标识符

#pragma mark - View lifecycle


- (void)viewDidLoad
{
    UIAlertView *cats = [[UIAlertView alloc] initWithTitle:@"**Read this first!**"
                                                   message:@"Thank you for ..."
                                                  delegate:nil
                                         cancelButtonTitle:@"OK"
                                         otherButtonTitles:nil];
    [cats show];
    [catscroll setScrollEnabled:YES];
    [catscroll setContentSize:CGSizeMake(320,4800)];
    [catscroll setPagingEnabled:NO];
    [catform loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.petfinder.com/s/showPage.do?siteId=76333&pageId=7133416&shelterId=MA84&navigateToPage=Adopt%20Pets"]]];
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

- (void)doPop
{
    [cats dissmissWithClickedButtonIndex:-1 animated:YES];
    [self.navigationController popViewControllerAnimated:YES];
    UIAlertView *noconnectcatform = [[UIAlertView alloc] initWithTitle:@"Check your connection!"
                                                               message:@"Cannot connect to FPP Servers.\nPlease check your Internet Connection\nYou may not proceed until you are connected via a cellular network."
                                                              delegate:nil cancelButtonTitle:@"OK"
                                                     otherButtonTitles:nil];
    [noconnectcatform show];
}


如您在这张图片中看到的。如果未加载该网页,则会激活doPop,它会返回视图并显示一条消息。但是,这将引发EXC_BAD_ACCESS,因为如您所见,在viewDidLoad方法下,还有另一条消息正在播放。该应用程序变得混乱和崩溃。我试图通过消除doPop方法中的警报来解决此问题,但是很奇怪,它给了我这个错误。我可能会误会,但不是在显示“ UIAlertView * cats”的地方定义了alertview?为什么说它未在doPop方法中定义?请帮忙!

最佳答案

对象cats在本地定义为viewDidLoad。变量的范围不会超出方法范围,因此doPop不知道猫是什么。

将要在.h文件中定义的cats移动为成员/类变量。

这意味着您需要从UIAlertView *内删除viewDidLoad并仅引用cat(按原样,您正在定义范围为viewDidLoad的另一个变量)。

您在doPop中调用的方法中有错别字方法是dismissWithClickedButtonIndex:1 animated:YES];您有dissmissWithClickedButtonIndex:1 animated:YES];

另外,您只需要用IBOutlet定义的@property

关于iphone - 声明了未声明的标识符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11111698/

10-09 02:34