Objective-C
第二部分C
1. NSInteger類型變量怀骤,需要轉(zhuǎn)化為long击敌,使用%ld
2. NSUInteger類型變量介返,需要轉(zhuǎn)化為unsigned long,使用%lu
3. 浮點(diǎn)數(shù)float:%.2f保留小數(shù)點(diǎn)后2位;%.2e是科學(xué)計(jì)數(shù)法沃斤,保留小數(shù)點(diǎn)后2位
4. 地址與指針:%p是針對(duì)內(nèi)存地址的格式說明符 &i(int i = 7); %zu圣蝎,sizeof()會(huì)返回一個(gè)類型為size_t的數(shù)。
第三部分OC
對(duì)象Object
消息
1. 和結(jié)構(gòu)不同的在于:對(duì)象還可以包含一組函數(shù)衡瓶,并且這些函數(shù)可以使用對(duì)象所保存的數(shù)據(jù)徘公。這類函數(shù)成為方法(methods)
2. 對(duì)象圖:類用虛線,實(shí)例用實(shí)線
3. OC使用NSLog()哮针,功能與printf()類似关面。NSLog()會(huì)根據(jù)傳入的格式化字符串將格式說明符替換為實(shí)際的值,然后輸出結(jié)果十厢。NSLog()會(huì)先輸出日期等太、時(shí)間、程序名稱和進(jìn)程ID蛮放,然后輸出實(shí)際內(nèi)容缩抡。
4. 方法和消息:方法和函數(shù)類似,根據(jù)指令執(zhí)行相應(yīng)的功能筛武。在Objective-C語言中缝其,如需執(zhí)行方法里的代碼挎塌,首先需要發(fā)送一條消息給包含這個(gè)方法的對(duì)象或類徘六,如:NSDate *now = [NSDate date]; 向NSDate類發(fā)送了date消息,讓它執(zhí)行date方法榴都。
5. 消息發(fā)送:消息發(fā)送(指令)必須寫在一對(duì)方括號(hào)中待锈,并且必須包含接收方(receiver)和選擇器(selector)。選擇器:方法名嘴高,要觸發(fā)的方法的方法名竿音;接收方:指針,指向接收消息的對(duì)象的地址拴驮。
6. %@春瞬。會(huì)輸出相應(yīng)對(duì)象的"描述信息"。
7. NSDate *now = [NSDate date];double seconds = [now timeIntervalSince1970];第一條消息發(fā)送指令中套啤,NSDate類發(fā)送了date消息宽气,date是一個(gè)類方法(class method)。類方法會(huì)創(chuàng)建類的實(shí)例,并初始化實(shí)例變量萄涯。第二條消息發(fā)送指令中绪氛,now變量指向的NSDate實(shí)例發(fā)送了timeIntervalSince1970,這是一個(gè)實(shí)例方法(instance method)涝影。實(shí)例方法會(huì)提供實(shí)例中實(shí)例變量的信息枣察,或是對(duì)實(shí)例的實(shí)例變量進(jìn)行操作。
8. Objective-C語言命名習(xí)慣:指向?qū)嵗淖兞渴褂?駱駝拼寫法(camel case)"來命名燃逻,以小寫字母開頭序目,接下來每個(gè)單側(cè)的第一個(gè)字母使用大寫;方法的命名也是用駱駝拼寫法伯襟;類的名稱以大寫字母開頭宛琅,但接下來的單詞繼續(xù)使用駱駝拼寫法(如:NSDate、Person逗旁、CLLocation嘿辟、NSMutableArray)(一般來說,類的名稱是要加前綴的片效,這樣可以避免相似红伦,并且通過前綴可以知道它屬于哪個(gè)框架。Foundation框架的類使用NS前綴)淀衣;很多蘋果創(chuàng)建的類型和常量的命名也是前綴大寫的駱駝拼寫法昙读,如:NSInteger整形類型、NSOKButton常量膨桥。
9. 方法帶實(shí)參的時(shí)候蛮浑,冒號(hào)是構(gòu)成方法名的一個(gè)重要部分
10. NSCalendarUnitDay、NSCalendarUnityMonth只嚣。(新命名)
11. 消息的嵌套發(fā)送:消息可以以嵌套的形式連續(xù)發(fā)送沮稚。
12. alloc和init: 唯一必須已嵌套形式連續(xù)發(fā)送的消息是alloc和init。(每個(gè)類都有一個(gè)alloc類方法册舞,能夠創(chuàng)建一個(gè)新的對(duì)象并返回指向該對(duì)象的指針蕴掏,通過alloc創(chuàng)建出來的對(duì)象,必須經(jīng)過初始化才能使用调鲸,若未初始化則會(huì)存在于內(nèi)存但無法接收消息盛杰。每個(gè)類都有一個(gè)init實(shí)例方法用來初始化實(shí)例)
13. 想nil發(fā)送消息是合法的(如果程序向某個(gè)對(duì)象發(fā)送消息,但卻沒有得到預(yù)期的結(jié)果藐石,請(qǐng)檢查消息的接收方是否為nil即供;向nil發(fā)送消息,得到的返回值沒有意義)
14. id:id類型可以指向任意類型Objective-C對(duì)象的指針(注意:id已經(jīng)隱含了星號(hào)的作用)