Objective-C
第二部分C
1. NSInteger類型變量,需要轉(zhuǎn)化為long,使用%ld
2. NSUInteger類型變量,需要轉(zhuǎn)化為unsigned long,使用%lu
3. 浮點數(shù)float:%.2f保留小數(shù)點后2位;%.2e是科學(xué)計數(shù)法,保留小數(shù)點后2位
4. 地址與指針:%p是針對內(nèi)存地址的格式說明符 &i(int i = 7); %zu,sizeof()會返回一個類型為size_t的數(shù)。
第三部分OC
對象Object
消息
1. 和結(jié)構(gòu)不同的在于:對象還可以包含一組函數(shù),并且這些函數(shù)可以使用對象所保存的數(shù)據(jù)。這類函數(shù)成為方法(methods)
2. 對象圖:類用虛線,實例用實線
3. OC使用NSLog(),功能與printf()類似。NSLog()會根據(jù)傳入的格式化字符串將格式說明符替換為實際的值,然后輸出結(jié)果。NSLog()會先輸出日期、時間、程序名稱和進(jìn)程ID,然后輸出實際內(nèi)容。
4. 方法和消息:方法和函數(shù)類似,根據(jù)指令執(zhí)行相應(yīng)的功能。在Objective-C語言中,如需執(zhí)行方法里的代碼,首先需要發(fā)送一條消息給包含這個方法的對象或類,如:NSDate *now = [NSDate date]; 向NSDate類發(fā)送了date消息,讓它執(zhí)行date方法。
5. 消息發(fā)送:消息發(fā)送(指令)必須寫在一對方括號中,并且必須包含接收方(receiver)和選擇器(selector)。選擇器:方法名,要觸發(fā)的方法的方法名;接收方:指針,指向接收消息的對象的地址。
6. %@。會輸出相應(yīng)對象的"描述信息"。
7. NSDate *now = [NSDate date];double seconds = [now timeIntervalSince1970];第一條消息發(fā)送指令中,NSDate類發(fā)送了date消息,date是一個類方法(class method)。類方法會創(chuàng)建類的實例,并初始化實例變量。第二條消息發(fā)送指令中,now變量指向的NSDate實例發(fā)送了timeIntervalSince1970,這是一個實例方法(instance method)。實例方法會提供實例中實例變量的信息,或是對實例的實例變量進(jìn)行操作。
8. Objective-C語言命名習(xí)慣:指向?qū)嵗淖兞渴褂?駱駝拼寫法(camel case)"來命名,以小寫字母開頭,接下來每個單側(cè)的第一個字母使用大寫;方法的命名也是用駱駝拼寫法;類的名稱以大寫字母開頭,但接下來的單詞繼續(xù)使用駱駝拼寫法(如:NSDate、Person、CLLocation、NSMutableArray)(一般來說,類的名稱是要加前綴的,這樣可以避免相似,并且通過前綴可以知道它屬于哪個框架。Foundation框架的類使用NS前綴);很多蘋果創(chuàng)建的類型和常量的命名也是前綴大寫的駱駝拼寫法,如:NSInteger整形類型、NSOKButton常量。
9. 方法帶實參的時候,冒號是構(gòu)成方法名的一個重要部分
10. NSCalendarUnitDay、NSCalendarUnityMonth。(新命名)
11. 消息的嵌套發(fā)送:消息可以以嵌套的形式連續(xù)發(fā)送。
12. alloc和init: 唯一必須已嵌套形式連續(xù)發(fā)送的消息是alloc和init。(每個類都有一個alloc類方法,能夠創(chuàng)建一個新的對象并返回指向該對象的指針,通過alloc創(chuàng)建出來的對象,必須經(jīng)過初始化才能使用,若未初始化則會存在于內(nèi)存但無法接收消息。每個類都有一個init實例方法用來初始化實例)
13. 想nil發(fā)送消息是合法的(如果程序向某個對象發(fā)送消息,但卻沒有得到預(yù)期的結(jié)果,請檢查消息的接收方是否為nil;向nil發(fā)送消息,得到的返回值沒有意義)
14. id:id類型可以指向任意類型Objective-C對象的指針(注意:id已經(jīng)隱含了星號的作用)