gpt4 book ai didi

xcode - 在应用程序启动 OSX 时运行代码

转载 作者:行者123 更新时间:2023-11-30 13:54:40 24 4
gpt4 key购买 nike

我正在寻找一种方法,让应用程序启动后就不断运行某些代码。我正在尝试使用 swiftSockets 制作一个简单的点对点聊天应用程序。

import Cocoa
import CryptoSwift

class MasterViewController: NSViewController {

@IBOutlet var msgField: NSTextField!
@IBOutlet var msgWindow: NSTextView!

let server:UDPServer = UDPServer(addr: "127.0.0.1", port: 5000)

override func viewDidLoad() {
super.viewDidLoad()

}

func receive() {
let data = server.recv(1024)
let string = NSData.withBytes(data.0!)
let str = NSString(data: string, encoding: NSUTF8StringEncoding) as String?
msgWindow.string! += server.addr + " says: " + str! + "\n"
}

@IBAction func send(sender: NSButton) {
msgWindow.string! += "I said: " + msgField.stringValue + "\n"
msgField.stringValue = ""
server.send(str: msgField.stringValue)
let data = server.recv(1024)
let string = NSData.withBytes(data.0!)
let str = NSString(data: string, encoding: NSUTF8StringEncoding) as String?
msgWindow.string! += server.addr + " says: " + str! + "\n"
}
}

我有上面的代码,发送效果很好,但是,如何让接收函数在应用程序运行后立即在后台运行?

最佳答案

只需在 viewDidLoad() 或 viewDidAppear() 函数中调用接收函数即可。要在后台运行它,请考虑dispatch_async()或dispatch_sync()

let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0)) {
// do some tasks, in this case call receive()
dispatch_async(dispatch_get_main_queue()) {
// update some UI
}
}

如果您只是想定期运行它而不需要将其传输到后台,请考虑使用 NSTimer,并调用其 ScheduledTimerWithTimeInterval 函数,如下所示:

let timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "receive", userInfo: nil, repeats: true)

第一个参数是以秒为单位的时间间隔,选择要定期调用的函数(在本例中为接收)。

关于xcode - 在应用程序启动 OSX 时运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33794313/

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