Objective-C的bool為什麼叫boll
“Objective-C語言是在C語言的基礎上,又加了一層物件導向與動態語言特性的語言,很多基本型別是直接來自於C語言。C語言在發展之初,並沒有布林值,於是Objective-C語言在發展的過程中,定義了自己的BOOL,但是在C99規格中,C語言又有了自己的布林型別bool,而Objective-C又可以混和C++語法變成Objective-C++,C++裡頭也有bool。”
“那麼,Objective-C的BOOL,與C99以及C++的bool有什麼差別呢?
在iOS的64位元或是在Apple Watch上,Objective-C的BOOL會直接等於定義在stdbool.h裡頭的bool,其實是int,而如果使用了C++,那麼stdbool.h裡頭的定義就變成是C++的bool。但,如果是在Mac OS X上,或是32位元的iOS環境下,BOOL就會被定義成是一個char,而BOOL與bool,就分別是一個byte或是四個bytes的差別。”
“所以,在64位元或Apple Watch上,BOOL與bool並沒有差別,但我們通常不能假設我們寫的code只會在這種環境下執行,雖然在其他環境下,使用BOOL或是bool通常也沒什麼影響,但既然某個API明確就是要求你傳入BOOL,那就傳入YES或NO,好像也沒什麼非要傳入true或false的理由。
另外,當我們想把BOOL轉成NSNumber,最簡單的寫法還是直接使用Xcode 4.4之後的literals的寫法,寫成@(YES)或@(NO),另外Core Foundation裡頭也定義了kCFBooleanTrue與kCFBooleanFalse,也具有同樣的功能。”
內容源參考: “KKBOX iOS/Mac OS X基本開發教材.” iBooks.
相關文章
- C++是什麼意思,為什麼叫C++?C++
- 華為處理器為什麼叫海思麒麟?
- objective-C 列舉型和BOOL型Object
- 到底什麼叫智慧?
- Python為什麼叫爬蟲?Python為什麼適合寫爬蟲?Python爬蟲
- 為什麼說Objective-C很難學?Object
- NGINX伺服器有什麼作用?什麼叫反向代理?為什麼要使用反向代理?Nginx伺服器
- 好端端的資料結構,為什麼叫它SB樹呢?資料結構
- 什麼叫"雲端計算"?
- 什麼叫PMP?專案管理的本質是什麼?專案管理
- 開箱即用的模型叫什麼模型?有什麼特點模型
- 漲姿勢:Android手機的系統為什麼叫ROMAndroid
- python為什麼叫爬蟲?Python和爬蟲有什麼關係?Python爬蟲
- 什麼叫xml資料庫?XML資料庫
- 什麼叫雲端計算?雲端計算是什麼意思
- 什麼叫伺服器端渲染伺服器
- 什麼叫大資料 大資料的概念大資料
- 什麼叫超融合基礎架構?架構
- Java學到什麼程度才能叫精通?Java
- 什麼叫應用程式域(AppDomain)?APPAI
- 什麼叫嵌入式資料庫?資料庫
- 什麼叫網路傳真系統
- 區塊鏈100講:區塊鏈為什麼叫“區塊”“鏈”?區塊鏈
- Objective-C 中的 Meta-class 是什麼?Object
- 什麼叫智慧電網,「智慧」在何處?
- [轉] 好文章。解釋什麼叫工作
- 憑什麼別的虛擬機器叫虛擬機器,Python的叫直譯器?虛擬機Python
- 為什麼為什麼為什麼為什麼為什麼你要做一名程式設計師?程式設計師
- Objective-C 和 C++ 的區別有哪些?為什麼蘋果會選擇前者?ObjectC++蘋果
- 怎麼向女朋友解釋什麼叫區塊鏈?區塊鏈
- [譯]Objective-C中的meta-class是什麼。Object
- Objective-C 中的元類(meta class)是什麼?Object
- Python 基礎起步 (十) 什麼叫函式?Python函式
- 什麼叫執行緒安全,舉例說明。執行緒
- jpg檔案通常是什麼 一般什麼叫jpg檔案
- js中bool值為false的幾種情況JSFalse
- 什麼叫智慧園區?智慧園區的社會價值
- 什麼叫Kuso Game!這家俄羅斯工作室為何能讓玩家立下毒誓?GAM