iOS Swift 如何创建协议(protocol)实例

标签 ios objective-c iphone xcode swift

我是一名 Android 开发者,我对 Swift 还很陌生,所以请多多包涵。我正在尝试在 Swift 中使用 Protocol 实现回调函数。在 Java 中,我可以创建一个接口(interface)并使其成为一个实例,而无需将它链接到任何实现类,以便我可以传递它,例如:

public interface SomeListener {
    void done(); 
}

SomeListener listener = new SomeListener() {
    @Override
    public void done() {
        // do something
    }
}
listener.done();

我如何在 Swift 中使用 Protocol 来做到这一点?还是真的可以做到?

最佳答案

这是实现协议(protocol)的一种方式。有点像 ObjC 中的委托(delegate)模式

protocol DoneProtocol {
    func done()
}

class SomeClass {
    var delegate:DoneProtocol?

    func someFunction() {
        let a = 5 + 3
        delegate?.done()
    }
}

class Listener : DoneProtocol {
   let someClass = SomeClass()

   init() {
       someClass.delegate = self
       someClass.someFunction()
   }
   // will be called after someFunction() is ready
   func done() {
       println("Done")
   }
}

关于iOS Swift 如何创建协议(protocol)实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27616980/

相关文章:

objective-c - objective-C 中方法调配的正确方法

objective-c - 包含来自关系的对象的 NSFetchedResultsController

ios - 有没有办法在iOS上接收亚精度触摸事件?

ios - NSURLSession上传任务不调用completionHandler

ios - 删除电子邮件表上的自定义导航栏

ios - 如何使用 GLKit 将不同的纹理应用于不同的对象?

ios - 是否可以仅从 UDID 获取其他设备信息?

php - 无法打开输入文件 :/usr/local/bin/composer. phar

objective-c - namespace 冲突真的是 Objective-C 中的一个问题吗?

iphone - 从不兼容类型 'id<MFMessageComposeViewControllerDelegate>' 分配给 'MainViewController *'