有什么区别:
#selector(Aclass.someMethod)
和#selector(self.someMethod)
someMethod
是一个实例函数,我在AClass
内调用如下:
NSNotificationCenter.defaultCenter().addObserver(self,
selector: #selector(self.someMethod), // #selector(Aclass.method)
name: "REMoveOrderViewRefresh",
object: nil
)
答案 0 :(得分:4)
如果您引用自己班级的选择器,则应该没有区别,因为self
指向Aclass
。
如果要引用其他类的选择器,则必须显式调用Aclass.someMethod
,因为选择器不在self
上,而是在另一个对象上。
class MyClass: NSObject {
func someFunc() {
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.someOtherFunc(_:)), name: "someEvent", object: nil)
}
func someOtherFunc(notification: AnyObject) {
//
}
}
class OtherClass: NSObject {
func anotherFunc() {
let myInstance = MyClass()
NSNotificationCenter.defaultCenter().addObserver(myInstance, selector: #selector(MyClass.someOtherFunc(_:)), name: "someEvent", object: nil)
}
}