我正在開發iOS6並使用Xcode 4.5.2。向BOOL指針賦值時奇怪的警告問題
我有一個UIViewController
,假設它的名字是aViewController
。在這UIViewController
,我有一個布爾指針聲明爲使用此代碼屬性。實際上,這不是我已經實現的一段代碼,所以我不知道爲什麼使用BOOL指針。
現在,值分配給該BOOL指針的時候,我因爲在我的情況下,BOOL指向一個布爾變量得到了這個著名的警告Incompatible integer to pointer conversion assigning to 'BOOL *' (aka 'signed char *') from 'signed char'
這是完全可以理解的。
要解決這個問題,我已經試過this one。所以我的代碼是這樣的:
aViewController.aBoolPointer = YES;
然後,我試過,
aViewController.(*aBoolPointer) = YES;
由於Objective-C的是一個超級一套C,我記得在C .*
表示法等於->
。並且上述符號給出錯誤。錯誤描述:標識符預計。
如果我改變的代碼是這樣的:
aViewController->aBoolPointer = YES ;
我得到這個錯誤實例變量aBoolPointer保護。
這裏是奇怪的問題,如果我使用此代碼
aViewController.aBoolPointer = NO ;
然後,我沒有得到警告。
所以我的問題是:
- 爲什麼我沒有得到警告,當我NO值賦給一個BOOL指針?
- 如何我可以正確地分配YES值BOOL指針?
- 什麼是通過考慮我解釋的步驟YES或NO之間的差異?
謝謝大家。
你爲什麼要'BOOL *'?我敢打賭,你只需要一個'BOOL'屬性。你會感到困惑,因爲Obj-C中的所有對象都是指針,並且你假定原始屬性也需要指針。 – trojanfoe
我已經在問題中解釋過了,我沒有寫這段代碼,我已經知道使用BOOL *通常是無用的,如果你看到這個問題鏈接,我已經解釋了BOOL *沒有必要。但是,這是我面對的非常奇怪的問題。這就是爲什麼我問爲什麼會發生這種情況 – limon
Downvoters:你有什麼理由!!!!!如果你有,歡迎你評論。 – limon