2012-02-23 24 views
0

當設置exception breakpoint並調試獲取警告消息Catchpoint 2(拋出異常)。當前語言:auto;目前爲objective-c 警告:嘗試創建USE_BLOCK_IN_FRAME帶有不在框架中的塊的變量。 (GDB)警告消息試圖創建帶有不在框架中的塊的USE_BLOCK_IN_FRAME變量

這是什麼意思。

在我上UIToolbar的mainviewcontroller情況下都plapause切換按鈕,當點擊使用進行選擇

-(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]; 
} 

當簡單地嘗試運行的應用程序播放的音頻文件,並裝載20視圖控制器一前一後模擬器工作正常,但是當用異常斷點進行調試並點擊播放按鈕開始調試時,會獲得此警告消息。

任何人有想法正在發生的事情有異常斷點。

回答

2

這是來自調試器的警告,它無法爲特定對象創建任何信息結構。

下面是一個例子:

NSString* string = [[NSString alloc] initWithUTF8String:line]; 
在這行代碼的方法initWithUTF8String

:期望一個UTF-8編碼的C字符串,而不是一個對象的NSString。 所以這次編譯會給USE_BLOCK_IN_FRAME的warrning。

我們要保證所有warrnings有決心,因爲它可以是大的錯誤或應用程序可能會在不久的將來崩潰。


更新:


-(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]; 
} 
+0

那麼接下來如何解決此警告 – user1120133 2012-02-23 17:35:39

+1

確保所有的方法和對象時,使用是正確的,正確的,就像如果你正在使用textfield或table view方法首先確保所有委託都在.h文件中導入,如果您使用的是IB中的tham,而不是在您使用usin時創建IBOutlet和屬性克他們一些geter或setter方法,並在.m合成它們。 – kulss 2012-02-23 17:42:20

+0

請檢查我添加的內容和代碼到我的文章 – user1120133 2012-02-23 18:04:51