1.編譯的時(shí)候報(bào)錯(cuò)遥巴,但是沒(méi)有提示,說(shuō)明肯定是鏈接報(bào)錯(cuò)的了悴务。
2.Xcode是將項(xiàng)目中的.m文件一起編譯和鏈接的睹限。
3.統(tǒng)一的一類(lèi)方法使用 - 隔開(kāi),分成一個(gè)組
4.當(dāng)獨(dú)的注釋一個(gè)方法的時(shí)候讯檐,就不要使用 - 了羡疗,#pragma mark xx方法
5.!感嘆號(hào)别洪,是標(biāo)示鏈接的錯(cuò)誤
6..點(diǎn)語(yǔ)法的本質(zhì)叨恨,還是方法調(diào)用,相當(dāng)于setAge:10 p.age = 10;或者是 [p age]; p.age;
7..語(yǔ)法注意調(diào)用的問(wèn)題挖垛,不發(fā)生死循環(huán)
8.@public 在任何地方都能直接訪問(wèn)對(duì)象的成員變量
@private 只能在當(dāng)前類(lèi)的對(duì)象方法中直接訪問(wèn)
@protected 可以在當(dāng)前類(lèi)及其子類(lèi)的對(duì)象方法中直接訪問(wèn)(默認(rèn)是@protected)
@package 只要處在同一個(gè)框架中特碳,就能直接訪問(wèn)對(duì)象的成員變量
9. .m中的私有成員變量名不能與聲明部分的成員變量同名
10.OC是單繼承,只能有一個(gè)父類(lèi)晕换,C++有多繼承午乓,多個(gè)父類(lèi),父類(lèi)中的所有成員變量闸准,子類(lèi)中都會(huì)有
11.@property 可以自動(dòng)生成某個(gè)成員變量的setter和getter方法的聲明
12.編譯器是最笨的益愈,你怎么寫(xiě)它就怎么生成方法
13.@synthesize 自動(dòng)生成age的setter和getter實(shí)現(xiàn),并且會(huì)訪問(wèn)_age這個(gè)成員變量
@synthesize age = _age;如果不存在成員變量夷家,會(huì)自動(dòng)生成@private類(lèi)型的_age變量蒸其,默認(rèn)情況下會(huì)訪問(wèn)age和它名字一樣的成員變量。
14.Xcode會(huì)按照我們的方法库快,我們聲明的方法摸袁,檢查有,他就不會(huì)生成了
15.繼承是重寫(xiě)义屏,屬性的setter,gertter也能重寫(xiě)
16.id 萬(wàn)能指針靠汁,只適用于oc對(duì)象
17.完整地創(chuàng)建一個(gè)可用的對(duì)象
1>分配存儲(chǔ)空間蜂大,+alloc
2>初始化 -init
18.構(gòu)造方法:重寫(xiě)init方法,給賦值
1>一定要調(diào)用super的init方法蝶怔,初始化父類(lèi)中聲明的一些成員變量和其他屬性
2>如果對(duì)象初始化成功奶浦,才有必要接下來(lái)的初始化
3>返回一個(gè)已經(jīng)初始化完畢的對(duì)象
19.自定義構(gòu)造方法:
1>一定是對(duì)象方法,一定以 - 開(kāi)頭
2>返回值一般是id類(lèi)型
3>方法名一般以init開(kāi)頭
20.分類(lèi)踢星,類(lèi)別澳叉,類(lèi)目,Category沐悦,給某一個(gè)類(lèi)擴(kuò)充一些方法成洗,不修改原來(lái)類(lèi)的代碼
21.類(lèi)擴(kuò)展:
22.分類(lèi)是的實(shí)現(xiàn)方法中可以訪問(wèn)類(lèi)的成員變量。
23.分類(lèi)的優(yōu)先級(jí)最高藏否,現(xiàn)在分類(lèi)中查找瓶殃,然后再去原來(lái)類(lèi)中找,最后到父類(lèi)中去找
24.分類(lèi)只能增加方法秕岛,不能增加成員變量碌燕;分類(lèi)方法實(shí)現(xiàn)中可以訪問(wèn)原來(lái)類(lèi)中的聲明的成員變量误证;分類(lèi)可以重新實(shí)現(xiàn)原來(lái)類(lèi)中的方法继薛,但是會(huì)覆蓋掉原來(lái)的方法,會(huì)導(dǎo)致原來(lái)的方法沒(méi)法再使用愈捅;方法調(diào)用的優(yōu)先級(jí)遏考,分類(lèi)(最后參與編譯的分類(lèi)優(yōu)先)->原來(lái)類(lèi)->父類(lèi)
25.- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapWidth; //意思就是用來(lái)創(chuàng)建一個(gè)內(nèi)容可拉伸,而邊角不拉伸的圖片蓝谨,需要兩個(gè)參數(shù)灌具,第一個(gè)是左邊不拉伸區(qū)域的寬度,第二個(gè)參數(shù)是上面不拉伸的高度譬巫。那么接下來(lái)的一個(gè)像素會(huì)被拉伸咖楣。例如,leftCapHeight為6芦昔,topCapHeight為8诱贿。那么,圖片左邊的6個(gè)像素咕缎,上邊的8個(gè)像素珠十。不會(huì)被拉伸,而左邊的第7個(gè)像素凭豪,上邊的第9個(gè)像素這一塊區(qū)域?qū)?huì)被拉伸焙蹭。剩余的部分也不會(huì)被拉伸。
26.類(lèi)的本質(zhì)也是一個(gè)對(duì)象
27.類(lèi)的加載嫂伞,+load;程序已啟動(dòng)分類(lèi)和類(lèi)都會(huì)加載進(jìn)內(nèi)存孔厉,分類(lèi)優(yōu)先加載類(lèi)的方法拯钻,只會(huì)執(zhí)行一次;當(dāng)?shù)谝淮问褂媚硞€(gè)類(lèi)時(shí)烟馅,就會(huì)調(diào)用當(dāng)前類(lèi)的+initialize方法说庭。
28.不要在description方法中執(zhí)行輸出語(yǔ)句,會(huì)死循環(huán)
29.-(NSString *)description方法決定了實(shí)例對(duì)象的輸出語(yǔ)句郑趁,+(NSString *)description方法決定了類(lèi)對(duì)象的輸出結(jié)果
30.SEL把test2包裝成SEL類(lèi)型的數(shù)據(jù)刊驴,根據(jù)SEL數(shù)據(jù)找到對(duì)應(yīng)的方法地址,根據(jù)方法地址調(diào)用對(duì)應(yīng)的方法寡润。
31.performSelector:@selector(test2)];調(diào)用方法的2種方式
32.當(dāng)只知道一個(gè)方法名的字符串捆憎,也可以調(diào)用這個(gè)方法,NSString *name = @"test2";SEL s = NSSelectorFromString(name); [p performSelector:s];
33._cmd 代表當(dāng)前方法梭纹,SEL類(lèi)型的數(shù)據(jù)躲惰,這樣調(diào)用方法是很耗性能的,運(yùn)行時(shí)就可以直接把方法名拿過(guò)來(lái)調(diào)用变抽,其實(shí)發(fā)消息就是SEL