【发布时间】:2018-03-14 10:28:31
【问题描述】:
我是从 java 搬来的 swift 新手。还有一些设计模式的实现让我很困惑。
例如,我在 java 代码中有 presudo 模式观察者(回调)(下面有示例)。即 UI 将自己的侦听器传递给 Manager 类并侦听回调 isConnected 和 isDisconnected。如果执行回调,UI 类会显示某些消息“isConnected”或“isDisconnected”
public class UI{
private Manager mManager;
void createManager(){
mManager = new Manager(mManagerLister);
}
public void showMessage(String aMsg){
print(aMsg)
}
private final IManagerListener mManagerLister = new IManagerListener{
void isConnected(){
this.showMessage("isConnected")
}
void isDisconnected(){
this.showMessage("isConnected")
}
}
}
public class Manager{
interface IManagerListener{
void isConnected();
void isDisconnected();
}
private final mListener;
public Manager(IManagerListener aListener){
mListener = aListener;
}
}
如何正确将此 java 代码移植到 swift 代码?我尝试移植,但错误消息'UI' 类型的值没有成员'showMessage' 显示
public class UI{
var manager: Manager?
var managerListener: IManagerListener?
func createManager(){
managerListener = ManagerListenerImp(self)
manager = Manager(managerListener)
}
public func showMessage(msg: String){
print(msg)
}
class ManagerListenerImp: IManagerListener{
weak var parent: UI
init(parent : UI ){
self.parent = parent
}
func isConnected(){
parent.showMessage("isConnected")
// Value of type 'UI' has no member 'showMessage'
}
..........
}
}
也许存在更优雅的使用回调的方式,而我的方式不正确?
【问题讨论】:
-
您的代码似乎有问题,
parent应该是可选的,如果它是weak
标签: ios swift design-patterns