簡體   English   中英

未連接設備時布爾上的Xcode編譯錯誤

[英]Xcode compile error on bool when device not connected

我正在嘗試使用以下代碼片段制作簡單的動畫:

[UIView animateWithDuration:2.0
                      delay:0.0
                    options: UIViewAnimationOptionCurveEaseInOut
                 animations:^{
                    [self.view setAlpha:0.7f];

                 }
                 completion:^(BOOL finished){
                     if(finished)  NSLog(@"Finished !!!!!");
                     // do any stuff here if you want
                 }];

但是XCode給我一個錯誤說明:

“不兼容的塊指針類型將'void(^)(uint_8t)'發送到類型為'void(^)(BOOL)'的參數”。

如果我嘗試將'BOOL'更改為'bool',則在iPad Air上編譯時代碼可以正常工作,但是當我斷開iPad並嘗試使用模擬器時,會收到相同的錯誤,但類型不同:

“不兼容的塊指針類型將'void(^)(bool)'發送到類型'void(^)(BOOL)'的參數”。

我認為這很奇怪,因為它似乎對很多人都有用,並且是相當標准的代碼。 是什么導致這種現象?

附注:我還通過-(void)viewWillDisappear:(bool)animateated方法獲得了不兼容類型的警告。 當我連接iPad時,它們也會消失,當斷開連接時,它們會再次出現。

編輯:----此代碼甚至會導致錯誤:

[searchArray enumerateObjectsUsingBlock:^(NSString *key, NSUInteger idx, BOOL *stop)
     {
         address = addresses[key];
         if(address) *stop = YES;
     } ];

也在BOOL字段上。 並且錯誤是相同的,沖突的參數類型。

BOOL是另一種類型,具體取決於您是針對32位編譯還是針對64位編譯。 使用了不同的類型,例如Bool,bool,Boolean和其他類型,請確保在各處使用相同的類型。

插入設備意味着將為您的設備而不是為模擬器編譯代碼,因此這可以在32位和64位之間更改並觸發問題。

我還要檢查一下代碼中是否存在BOOL的typedef或#define。 雙擊代碼中的BOOL,右鍵單擊並“顯示定義”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM