Iphone 警告消息试图创建块为非';的USE#BLOCK"IN"帧变量;镜框中的t
设置Iphone 警告消息试图创建块为非';的USE#BLOCK"IN"帧变量;镜框中的t,iphone,ios5,xcode4.2,Iphone,Ios5,Xcode4.2,设置异常断点并调试时收到捕获点2(引发异常)的警告消息。当前语言:自动;当前目标-c 警告:试图创建在\u帧中使用\u BLOCK\u变量,但块不在帧中。 (gdb) 这意味着什么 在我的例子中,UIToolbar上的mainviewcontroller有一个plapause切换按钮,点击该按钮时,播放音频文件并使用执行选择器逐个加载20个视图控制器 -(void)playpauseAction:(id)sender { if ([audioPlayer isPlaying]){
异常断点
并调试时收到捕获点2(引发异常)的警告消息。当前语言:自动;当前目标-c
警告:试图创建在\u帧中使用\u BLOCK\u
变量,但块不在帧中。
(gdb)
这意味着什么
在我的例子中,UIToolbar上的mainviewcontroller有一个plapause切换按钮,点击该按钮时,播放音频文件并使用执行选择器逐个加载20个视图控制器
-(void)playpauseAction:(id)sender
{
if
([audioPlayer isPlaying]){
[sender setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateSelected];
[audioPlayer pause];
} else {
[sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
[audioPlayer play];
[self performSelector:@selector(displayviewsAction:) withObject:nil afterDelay:11.0];
}
}
- (void)displayviewsAction:(id)sender
{
FirstViewController *viewController = [[FirstViewController alloc] init];
viewController.view.frame = CGRectMake(0, 0, 320, 480);
[self.view addSubview:viewController.view];
[self.view addSubview:toolbar];
[self performSelector:@selector(secondViewController) withObject:nil afterDelay:23];
[viewController release];
}
-(void)secondViewController {
SecondViewController *secondController = [[SecondViewController alloc] init];
secondController.view.frame = CGRectMake(0, 0, 320, 480);
[self.view addSubview:secondController.view];
[self.view addSubview:toolbar];
[self performSelector:@selector(ThirdviewController) withObject:nil afterDelay:27];
[secondController release];
}
当简单地尝试在模拟器中运行应用程序时,它可以正常工作,但当使用异常断点进行调试并点击“播放”按钮开始调试时,会收到此警告消息
任何人都知道异常断点的情况。当调试器无法为特定对象创建任何信息结构时,这是调试器发出的警告 以下是一个例子:
NSString* string = [[NSString alloc] initWithUTF8String:line];
在这一行代码中,initWithUTF8String方法:需要UTF-8编码的C字符串,而不是NSString对象。
因此,这次编译器将给出一个USE\u BLOCK\u IN\u FRAME
警告
我们应该确保所有警告都已解决,因为这可能是一个大错误,或者应用程序可能在不久的将来崩溃
更新:
因此,如何修复此警告确保您使用的所有方法和对象都正确无误,例如,如果您使用的是textfield或table view方法,请首先确保所有委托都导入到.h文件中,如果你使用的是来自IB的tham,那么你可以在使用geter或setter方法时创建IBOutlet和property,并在.m中合成它们。我不在我的系统中,所以我现在无法检查所有事情,我将在明天早上回复你,而你可以在我的回复中检查你的代码,并更新。。。
-(void)playpauseAction:(id)sender
{
UIButton *btn = (UIButton *)sender;
if([audioPlayer isPlaying]){
[audioPlayer pause];
[btn setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
} else {
[audioPlayer play];
[btn setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
[self performSelector:@selector(displayviewsAction) withObject:nil afterDelay:11.0];
}
}
- (void)displayviewsAction
{
FirstViewController *viewController = [[FirstViewController alloc] initWithNibName:"FirstViewController"];
viewController.view.frame = CGRectMake(0, 0, 320, 480);
[self.view addSubview:viewController.view];
[self.view addSubview:toolbar];
[self performSelector:@selector(secondViewController) withObject:nil afterDelay:23];
[viewController release];
}
-(void)secondViewController {
SecondViewController *secondController = [[SecondViewController alloc] init];
secondController.view.frame = CGRectMake(0, 0, 320, 480);
[self.view addSubview:secondController.view];
[self.view addSubview:toolbar];
[self performSelector:@selector(ThirdviewController) withObject:nil afterDelay:27];
[secondController release];
}