調(diào)試
符號(hào)斷點(diǎn):可指定某個(gè)方法;直接添加方法名别垮,則相當(dāng)于設(shè)置斷點(diǎn)在方法的第一行;
Oc有過三種編譯器:GCC(很老扎谎,棄用)碳想、LLVM、Apple LLVM(主要使用)毁靶;
LLDB調(diào)試工具:在設(shè)置斷點(diǎn)后胧奔,在輸入面板中使用lldb的命令進(jìn)行調(diào)試及計(jì)算;
常用命令:
p :輸出基本類型
po :輸出Oc對(duì)象
expo :動(dòng)態(tài)修改參數(shù)的值预吆,并調(diào)試
call : 調(diào)用其他方法龙填,如:call [self showSize:array]
bt : 打印調(diào)用堆棧,加all可打印全部拐叉;用于程序crash時(shí)調(diào)用岩遗;
image :用于尋址;image lookup -n;根據(jù)對(duì)象名查看數(shù)據(jù)位置凤瘦;-t 根據(jù)類型查看宿礁;
c : 跳過斷點(diǎn),恢復(fù)進(jìn)程向下執(zhí)行廷粒;
b :設(shè)置斷點(diǎn)窘拯;如:b login 即設(shè)置斷點(diǎn)到login方法
br :查看設(shè)置的斷點(diǎn);br l :列表坝茎;br del 1:刪除#1的斷點(diǎn)
thread:執(zhí)行步驟涤姊;thread util 45:執(zhí)行到第45行;
s :跳過嗤放,向下執(zhí)行
n : 向下招待一步思喊;
si :進(jìn)入線程
ni :跳出線程;
finish: 結(jié)束該線程次酌;
r : 運(yùn)行進(jìn)程恨课,并可設(shè)置啟動(dòng)參數(shù)舆乔;
【可在Edit BreadPoint下設(shè)置條件斷點(diǎn);】
單元測(cè)試:
使用XCTest框架剂公;
性能優(yōu)化
Oc三種內(nèi)存管理方式:
MRC:由程序員自己負(fù)責(zé)管理對(duì)象的生命周期希俩,負(fù)責(zé)對(duì)象的創(chuàng)建和銷毀;
ARC:與MRC一樣使用內(nèi)存引用計(jì)數(shù)方法纲辽,但由系統(tǒng)負(fù)責(zé)颜武;(IOS5后才有)
GC:類似于java的GC;只能應(yīng)用于OS X開發(fā),不能應(yīng)用于iOS開發(fā)拖吼;
使用Analyze工具檢測(cè)是否有內(nèi)存泄漏鳞上;
Product—>profile可打開Instruments工具箱:
Leaks:用于檢查內(nèi)存泄漏;
Zombies:用于發(fā)現(xiàn)僵尸對(duì)象吊档;
在低內(nèi)存時(shí)篙议,要做相應(yīng)的處理;在ViewController類的didReceiveMemoryWarning下處理怠硼;其他類監(jiān)聽系統(tǒng)的UIApplicationDidReceiveMemoryWarningNotification通知鬼贱;