如何避免通过[[alloc] init]创建iOS单例类
生活随笔
收集整理的這篇文章主要介紹了
如何避免通过[[alloc] init]创建iOS单例类
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
這樣寫就可以了
額外創(chuàng)建有很多,還有new方法也可以,把這些方面都重載一遍返回 sharedManager 實例,或者直接拋出異常
又去stackovweflow找了下方法,我覺得既然是單例模式,調(diào)用者就應(yīng)該嚴格按照單例的要求,通過統(tǒng)一的接口(這里是sharedInstance)去創(chuàng)建單例,而不應(yīng)該出現(xiàn)調(diào)用[[class alloc] init]也能成功創(chuàng)建單例的情況,如果出現(xiàn)[[class alloc] init]的情況,我覺得更應(yīng)該讓Xcode給出警告不能用此方法
覆蓋allocWithZone和copyWithZone方法。因為通過alloc或者copy還是new,都是通過調(diào)用allocWithzone和copyWithzone來分配空間的。你可以把sharedManager 方法里面的代碼寫到這兩個方法里面,就可以從根本實現(xiàn)了單例的情況
(instancetype)init {@throw [NSException exceptionWithName:@"Disable" reason:@"Please use init instead..." userInfo:nil];return self;}
http://www.jianshu.com/p/08b1... 看看這篇我的寫博客.
額外創(chuàng)建有很多,還有new方法也可以,把這些方面都重載一遍返回 sharedManager 實例,或者直接拋出異常
又去stackovweflow找了下方法,我覺得既然是單例模式,調(diào)用者就應(yīng)該嚴格按照單例的要求,通過統(tǒng)一的接口(這里是sharedInstance)去創(chuàng)建單例,而不應(yīng)該出現(xiàn)調(diào)用[[class alloc] init]也能成功創(chuàng)建單例的情況,如果出現(xiàn)[[class alloc] init]的情況,我覺得更應(yīng)該讓Xcode給出警告不能用此方法
覆蓋allocWithZone和copyWithZone方法。因為通過alloc或者copy還是new,都是通過調(diào)用allocWithzone和copyWithzone來分配空間的。你可以把sharedManager 方法里面的代碼寫到這兩個方法里面,就可以從根本實現(xiàn)了單例的情況
(instancetype)init {@throw [NSException exceptionWithName:@"Disable" reason:@"Please use init instead..." userInfo:nil];return self;}
http://www.jianshu.com/p/08b1... 看看這篇我的寫博客.
總結(jié)
以上是生活随笔為你收集整理的如何避免通过[[alloc] init]创建iOS单例类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 换一个oppor11s电池需要多少钱,o
- 下一篇: 旧电脑回收价格,旧电脑回收,您还能得到这