通常意義上的混用是沒有問題的,
好比
float x=5.0;
(void)printNumber:(CGFloat)number;
當調用printNumber:x的時候是沒有問題的
可是若是使用float*和CGFloat*的時候混用就會出現錯誤
好比
float x[]={5.0,7.0};
(void)printNumber:(CGFloat*)Arr;
就會出現問題,不可以正確的傳遞,反向的混用也回出現錯誤,好比以下:
CGFloat x[]={5.0,7.0};
(void)printNumber:(float*)Arr;
錯誤的結果是傳遞過來的是野指針。在以上例子中若是單用float或者CGFloat都不會出現問題。指針
最終我思考出來了問題的緣由,float
緣由很簡單,由於CGFloat的定義其實是double,因此變成指針的時候,float和double的指針取值的長度不同。思考