1.objective-c 是消息結(jié)構(gòu)語(yǔ)言从橘, 并非函數(shù)調(diào)用語(yǔ)言
二者的區(qū)別在于撒妈。
消息結(jié)構(gòu)語(yǔ)言疚察,其運(yùn)行時(shí)所應(yīng)執(zhí)行的代碼有其運(yùn)行時(shí)決定。
使用動(dòng)態(tài)綁定的消息結(jié)構(gòu)宾袜,只有在運(yùn)行時(shí)才會(huì)檢查對(duì)象的類型捻艳。
函數(shù)調(diào)用語(yǔ)言,有編譯器決定庆猫。
2认轨、在類的頭文件中盡量少應(yīng)用其他頭文件。
在.h中如果不需要詳細(xì)接口信息月培,盡量使用@class 類名嘁字,這種向前聲明的方式。
可以大量減少編譯時(shí)間杉畜,和兩個(gè)類之間相互引用的問題纪蜒,降低彼此的依賴度。
如果是繼承某個(gè)類此叠,或者遵循某個(gè)類的協(xié)議就必須導(dǎo)入完整的頭文件纯续。
3.多用字面量語(yǔ)法創(chuàng)建字符
用字面量語(yǔ)法創(chuàng)建數(shù)組或字典時(shí),若有nil 則會(huì)拋出異常,務(wù)必確保值里面不含nil
4.多用常量類型猬错,少用#define預(yù)處理指令
#define 會(huì)將后面遇到的所有替換窗看。切不能顯示數(shù)據(jù)類型。
static const數(shù)據(jù)類型常量明等同于#define(只在編譯單元內(nèi)可見)
全局符號(hào)表
extern NSString *const name;
5倦炒、用枚舉類型表示狀態(tài)显沈。選項(xiàng)。狀態(tài)碼析校;
消息傳遞: 在對(duì)象之間傳遞數(shù)據(jù)并執(zhí)行任務(wù)的過程、
runtime 程序運(yùn)行起來后提供相關(guān)支持的代碼叫運(yùn)行時(shí)環(huán)境铜涉,它提供了
使得對(duì)象之間能后傳遞消息的重要函數(shù)智玻。并且包含了創(chuàng)建的全部邏輯。
6屬性
assign針對(duì)純量類型進(jìn)行簡(jiǎn)單的復(fù)制操作(CGFolat NSInteger)
strong 定義了一種擁有關(guān)系,,為這種屬性賦值時(shí)芙代,會(huì)先保留新值吊奢,并釋放舊值,在將新值添加上去纹烹。
week 定義了一種非擁有關(guān)系页滚,為這種屬性復(fù)制是, 既不保留新值铺呵,也不釋放舊值裹驰。此特質(zhì)與assgin 類似。
但是片挂,在屬性所指的對(duì)象銷毀時(shí)幻林,屬性值也會(huì)被清空。
unsafe_unretained? 語(yǔ)義和assign相同音念,但他適用于” 對(duì)象類型”,表達(dá)一種非擁有關(guān)系沪饺,不保留。
當(dāng)目標(biāo)對(duì)象遭到摧毀時(shí)闷愤,屬性值不會(huì)自動(dòng)清空整葡。
7在對(duì)象內(nèi)部盡量直接訪問實(shí)例變量
寫入數(shù)據(jù)時(shí),應(yīng)該通過屬性去寫
在初始化方法和dealloc 方法中讥脐,總是應(yīng)該直接通過實(shí)例變量來讀取數(shù)據(jù)