NSString是一個(gè)特殊的類(lèi)卸伞,你可以看到打印出來(lái)的class結(jié)果顯示并不是NSString。NSString的初始化方法會(huì)通過(guò)抽象工廠模式來(lái)返回最合適的類(lèi)掖蛤,有點(diǎn)類(lèi)似NSNumber。
對(duì)NSString來(lái)說(shuō),alloc返回的是一個(gè)用來(lái)占位的子類(lèi)NSPlaceholderString,這個(gè)子類(lèi)并沒(méi)有實(shí)現(xiàn)NSString抽象類(lèi)的各種方法矩父,例如NSString *string = [NSString alloc];之后直接調(diào)用[string length];會(huì)出現(xiàn)崩潰。
string和newString只進(jìn)行了初始化排霉,結(jié)果都是空字符串@""窍株,這個(gè)結(jié)果在編譯期就已經(jīng)確定了,從而編譯器做了優(yōu)化讓他們指向了相同的地址。
OC源碼 —— alloc, init, new和dealloc上一篇最后講release的時(shí)候說(shuō)到夹姥,在release的最后,當(dāng)引用計(jì)數(shù)減為0的時(shí)候就進(jìn)入了dealloc的過(guò)程辙诞。這一篇就來(lái)講講dealloc和相關(guān)的一些方法辙售。先從deall...