注意: 被继承的类要避免是单例,否则子类通过单例的方式获取到的对象实际是父类的对象
案例:
class
P:
NSObject
{
static let instance = P()
func funcA() {
funcB
(
1
)
}
func
funcB(i:
Int
) ->
Bool
? {
return nil
return nil
}
}
class
Human:
P
{
override func funcB(i: Int ) -> Bool ? {
return false
}
override func funcB(i: Int ) -> Bool ? {
return false
}
}
错误:
Human.instance.funcA
原因: 子类通过单例的方式获取,实际是获取到父类的单例,在执行funcB时不会执行子类的funcB方法
正确:
let
h =
Human
()
h
.
funcA
()
//
class
Person{
var name: String = " 无名氏 "
private static let person = Person ()
static var shareInstance: Person {
return person
}
}
let
person =
Person
.shareInstance
person
.
name
swift 1.2 及之后的推荐写法
class MyManager {
static let sharedInstance = MyManager()
private init() { }
}