gpt4 book ai didi

swift - 我的 ViewController 中的监听器到我的自定义 Cocoapod 类 - Swift

转载 作者:行者123 更新时间:2023-11-30 10:59:25 28 4
gpt4 key购买 nike

我已经构建了自己的 Cocoapod,目前每秒触发一次 updateCounting() 函数。我的最终目标是使用协议(protocol),以便我可以在 View Controller 类中拥有某种委托(delegate)方法,每次 updateCounting() 触发时都会触发该方法。

我的公共(public) Cocoapod 文件当前如下所示:

public class Service: NSObject {
var timer = Timer()
public static let shared = Service()

public func scheduledTimerWithTimeInterval(){
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.updateCounting), userInfo: nil, repeats: true)
}

@objc func updateCounting(){
NSLog("counting..")
}
}

我的 VC 类当前如下所示:

import UIKit
import JacquardToolkit

class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
Service.shared.scheduledTimerWithTimeInterval()
}
}

我最初的想法是向我的 Service 类添加一个协议(protocol),如下所示:

public protocol ServiceDelegate: NSObjectProtocol {
func timerFired()
}

public class Service: NSObject, ServiceDelegate {

var timer = Timer()
public static let shared = Service()

public func scheduledTimerWithTimeInterval(){
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.timerFired), userInfo: nil, repeats: true)
}

@objc public func timerFired() {
NSLog("timerfired")
}

}

到目前为止,我已经陷入困境,但我本质上是在尝试在 VC 类中创建一个监听器,以便每次 timerFired()updateCounting() 触发时,我可以在我的 VC 类中检测到这一点并采取相应的行动。如有任何帮助,我们将不胜感激:)

最佳答案

您几乎已经完成了委托(delegate)模式的实现,但是您可能需要进行一些小的更正,如下代码所示:

class ViewController: UIViewController, ServiceDelegate {
override func viewDidLoad() {
super.viewDidLoad()
Service.shared.delegate = self
Service.shared.scheduledTimerWithTimeInterval()
}

func timerFired() {

NSLog("timerfired")
}
}
public protocol ServiceDelegate: NSObjectProtocol {
func timerFired()
}

public class Service: NSObject {


var timer = Timer()
public static let shared = Service()
weak var delegate:ServiceDelegate?

public func scheduledTimerWithTimeInterval(){
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.timerFired), userInfo: nil, repeats: true)
}

@objc public func timerFired() {
NSLog("timerfired")
delegate?.timerFired()
}

}

关于swift - 我的 ViewController 中的监听器到我的自定义 Cocoapod 类 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53559011/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com