我使用addObserver
API来接收通知:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "methodOFReceivedNotication:", name:"NotificationIdentifier", object: nil)
Run Code Online (Sandbox Code Playgroud)
我的方法是:
func methodOFReceivedNotication(notification: NSNotification){
//Action take on Notification
}
Run Code Online (Sandbox Code Playgroud)
是的,它有效!但是当我将方法更改methodOFReceivedNotication
为私有时:
private func methodOFReceivedNotication(notification: NSNotification){
//Action take on Notification
}
Run Code Online (Sandbox Code Playgroud)
xCode发给我一个错误: unrecognized selector sent to instance
如何在目标时调用私有方法self
?我不想将methodOFReceivedNotication
方法暴露给任何其他人.
yli*_*x81 14
只需dynamic
使用修饰符标记它,或使用@objc
方法声明中的属性
dynamic private func methodOFReceivedNotication(notification: NSNotification){
//Action take on Notification
}
Run Code Online (Sandbox Code Playgroud)
要么
@objc private func methodOFReceivedNotication(notification: NSNotification){
//Action take on Notification
}
Run Code Online (Sandbox Code Playgroud)
Jef*_*mas 10
你考虑过用过-addObserverForName:object:queue:usingBlock:
吗?
NSNotificationCenter.defaultCenter().addObserverForName("NotificationIdentifier", object: nil, queue: nil, usingBlock: {
[unowned self] note in
self.methodOFReceivedNotication(note)
})
Run Code Online (Sandbox Code Playgroud)
或者不是调用私有方法,只是执行操作.
NSNotificationCenter.defaultCenter().addObserverForName("NotificationIdentifier", object: nil, queue: nil, usingBlock: {
[unowned self] note in
// Action take on Notification
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6555 次 |
最近记录: |