[英]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.