這幾篇筆記是讀《objective-c基礎教程(learn objective-c on the mac for os x and ios)》(第二版)做的筆記。主要是一些讀書時遇到的疑惑,都是自己的理解,不一定正確,紀錄下來方便以後查閱,內容比較基礎,對剛入門ios的朋友也許有些幫助。
1,關於bool型別:
書第14頁(p14),方框裡的說明中舉了乙個例子,當把整數8960賦給bool型別時會被認為是no。這是因為bool在oc中其實就是乙個8位的signed char,而8960的低八位剛好為0.
這裡我們要注意oc中bool和bool的區別。
首先看一下bool的定義:
typedef signed
char
bool;
#define yes
(bool)
1#define no
(bool) 0
objective-c 並不會將bool作為僅能儲存yes或no值的真正布林型別來處理。編譯器仍將bool認作8位二進位制數,yes 和 no 值只是在習慣上的一種理解。
而bool型別則跟c一樣,只有
true和false的區別,即0為false,非0為true。
舉例:bool b1=8960; // 實際是 no,因為8960換成十六進製制為0x2300,bool 只有8位儲存空間,取0x2300的低8位,00,所以是no
bool b2=8960;//實際是true,因為bool型別,非0即為true。
同樣需要注意的還有p16中舉的例子,最好不要直接拿bool值跟yes進行對比,因為bool型別並非只有yes和no兩個值。
2.關於oc中的「虛函式」:
虛函式其實是c++中的概念,以實現類的多型性,而p53繼承的工作機制這一節中提到的特性其實跟虛函式的機制很相似,可以說oc中所有類函式(方法)都是虛函式,在當前類中能找到實現方法的直接呼叫該方法,只有當找不到對應的方法的時候才會往上一層去尋找對應方法。當然也可以通過使用super來呼叫父類方法。
3,關於復合與繼承:
p70底下有一段寫的很好,繼承並不是萬能的,不要什麼都第一時間想到繼承,有時候復合更加適合。
4.nsstring的初始化
nsstring變數主要有下面3種常用的定義方式:
//簡單的定義
nsstring *astring = @"nsstring建立的物件"
; //不需要分配記憶體空間和初始化
nsstring *tt = [nsstring stringwithformat:@"hello"
];
//需要分配記憶體空間和初始化,使用完後需要release
釋放 nsstring *pp = [[nsstring alloc]initwithformat:@"hello"
];
前面兩種都不需要手動釋放記憶體,後面兩種可能新手會混淆,第二種是類方法,第三種是例項方法,第二種可以看出是第三種加多一句autorelease,所以不需要手動release記憶體,而第三種則需要手動釋放。
具體可以看:
5,關於nsarray的初始化:
p116種提到兩種初始化方法:
nsarray *array1 = [nsarray arraywithobjects:@"1"
,@"2"
,@"3"
, nil];
nsarray *array2 = @[
@"1"
,@"2"
,@"3"];
這兩種方法都可以,但是第二種不需要在結尾加nil。
當然還有下面兩種方法:
nsarray *array3 = [nsarray arraywithobject:@"1"
];
//單個元素,不常見
nsarray *array4 = [nsarray arraywitharray:array2];
還要注意nsarray只能儲存objective-c物件,而不能存原始c語言的資料型別,如int,float等。
Objective C 學習筆記
1 is a 是乙個 繼承,提高執行效率,減少重複 2 has a 有乙個 復合,物件引用其它物件時,利用其它物件特性。3 返回屬性值的訪問方法,名稱中不能使用get這個詞 4 類名首字母大寫,變數首字母小寫。5 在objective c中所有物件間互動都是通過指標實現的。6 指標值被賦值,只有乙個...
Objective c學習筆記
property是object c的乙個特性,可以讓我們輕鬆實現成員變了的setting和getting方法。具體的語法如下 以成員變數nsstring m name為例 標頭檔案中宣告如下 property nsstring m name m檔案實現 synthesize m name 這樣我們便...
Objective c學習筆記
一 ojective c 建立物件涉及到一下註解 inte ce implementation 前乙個註解定義的是要實現的行為 後乙個註解是實現inte ce定義的行為 1.1在objective c中總共有4個基本資料型別,分別是int float double char 1.2限定詞 限定值有 ...