總結(jié):
NSSting&NSMutableString:
擁有共享機(jī)制和恒定性盹沈,只能更改指針碘梢,而不能更改對(duì)象本身在堆內(nèi)的數(shù)據(jù)想括。
偽更改:str1=[str1 stringByAppendingString: @"Whatever"]
等于的兩種意思:值相等 ( [str1: isEqualToString str2] )和指針相等 ( str1 == str2 )鉴腻。
例子忠寻,就好像搬家惧浴,地址改變了但是房子依舊存在,每一次改變都會(huì)制造一棟新的房子奕剃,所以說(shuō)這種更改并不好衷旅。
NSMutableString擁有可變性,可以直接通過(guò) [str appendString: @"String"] 來(lái)更改
NSMutableString最好在一開始就設(shè)定好它的capacity纵朋,方法: str = [str NSMutableString stringWithCapacity : capacity]
NSArray&NSMutableArray
和Array相比柿顶,還有沒(méi)有特定順序(無(wú)序)的Set,以及Dictionary操软,都具有常量性嘁锯,他們都有Mutable的子類。
ARC 自動(dòng)引用計(jì)數(shù)
協(xié)議 Protocol
協(xié)議是一個(gè)只描述外部接口,不提供實(shí)現(xiàn)(只能存在于.h文件里面)
它的里面不會(huì)包含實(shí)例變量家乘,同時(shí)蝗羊,它的@property是不會(huì)由編譯器自動(dòng)產(chǎn)生一個(gè)“_名字”的實(shí)例變量的。
它可以作為聲明變量的一部分仁锯,但是不可以創(chuàng)建實(shí)例
有兩種??警告需要注意:沒(méi)有遵守協(xié)議耀找,將一個(gè)沒(méi)有遵守協(xié)議的值賦給一個(gè)行為
可以通過(guò) confirmsToProtocal: 來(lái)判斷是否實(shí)現(xiàn)協(xié)議
協(xié)議本身可以互相繼承,但是子協(xié)議中必須實(shí)現(xiàn)父協(xié)議
類別 Category
可以添加實(shí)例方法扑馁,可以添加類方法涯呻,可以重寫基類方法。(不需要源代碼)
不能添加屬性腻要,實(shí)例變量和已存在的重名的方法
命名規(guī)范:“類名+擴(kuò)展方法.h/.m”
擴(kuò)展 Extension
需要源代碼!
可以添加屬性复罐,實(shí)例成員,類方法雄家,實(shí)例方法效诅,可以改寫讀寫屬性(可以放大,但是不可以縮小趟济,例如可以從readonly變成readwrite乱投,但是不可以顛倒)
擴(kuò)展不允許外部訪問(wèn):所以用于隱藏信息,或是用于類外不需要顷编,但是類內(nèi)需要的成員