NSString是一個(gè)特殊的類,你可以看到打印出來(lái)的class結(jié)果顯示并不是NSString。NSString的初始化方法會(huì)通過(guò)抽象工廠模式來(lái)返回最合適的類,有點(diǎn)類似NSNumber。
對(duì)NSString來(lái)說(shuō),alloc返回的是一個(gè)用來(lái)占位的子類NSPlaceholderString,這個(gè)子類并沒(méi)有實(shí)現(xiàn)NSString抽象類的各種方法,例如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...