靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)的區(qū)別:
靜態(tài)庫(kù):鏈接時(shí)會(huì)被完整復(fù)制到可執(zhí)行文件中必峰,被多次使用就有多分拷貝
動(dòng)態(tài)庫(kù):鏈接時(shí)不復(fù)制荒椭,程序運(yùn)行時(shí)由系統(tǒng)動(dòng)態(tài)加載到內(nèi)存荷科,系統(tǒng)只加載一次,多個(gè)程序公用席楚,節(jié)省內(nèi)存
程序啟動(dòng)執(zhí)行順序
mac@MacdeMacBook ~ % cd /Users/mac/Desktop/算法Test/算法Test? ? ? ?
mac@MacdeMacBook 算法Test % clang -ccc-print-phases main.m? ? ? ? ?
0: input, "main.m", objective-c咬崔。 ? ?源代碼
1: preprocessor, {0}, objective-c-cpp-output ? ? ? 預(yù)處理器
2: compiler, {1}, ir。 ?編譯器
3: backend, {2}, assembler酣胀。 ? 匯編
4: assembler, {3}, object ? ?機(jī)器碼
5: linker, {4}, image刁赦。 ?鏈接器
6: bind-arch, "x86_64", {5}, image∥畔猓可執(zhí)行文件
clang -rewrite-objc main.m
命令
xcrun -sdk iphonesimulator clang -rewrite-objc vc.m
clang -rewrite-objc Person.m
runtime 改變對(duì)象實(shí)例變量的值
動(dòng)態(tài)交換方法
動(dòng)態(tài)添加方法
分類(lèi)擴(kuò)展屬性