![](/img/trans.png)
[英]iOS warning message : Incompatible pointer types passing 'CGFloat *' (aka 'double *') to parameter of type 'float *'
[英]Incompatible block pointer types initializing 'CGFloat (^__strong)(CGFloat)' with an expression of type 'double (^)(CGFloat)'
我正在嘗試創建一個帶有CGFloat參數並返回CGFloat的塊變量。
CGFloat (^debt)(CGFloat) = ^(CGFloat myFloat) {
return myFloat * 444563.4004;
};
這個定義有什么問題? 為什么會收到此警告?
在iOS(和其他32位平台)上, CGFloat
是float
的別名。
您的文字( 444563.4004
)是double
,這將myFloat
提升為double
,並使代碼塊的返回類型為double
(而不是聲明debt
時所說的float
)。 將字面量更改為float
(將f
附加到其末尾),或將其CGFloat
為CGFloat
。
另一種可能的解決方案是使用具有顯式返回類型的塊:
CGFloat (^debt)(CGFloat) = ^CGFloat (CGFloat myFloat) {
return myFloat * 444563.4004;
};
為了避免編譯器試圖從返回語句中“猜測”返回類型。
在“塊編程主題”中比較創建塊:
如果沒有顯式聲明塊表達式的返回值,則可以從塊的內容中自動推斷出它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.