gpt4 book ai didi

ios - 过度使用公共(public)变量在两个 ViewController 之间进行通信

转载 作者:行者123 更新时间:2023-11-30 12:16:03 25 4
gpt4 key购买 nike

我刚刚开始进入苹果 AVFoundation 包来创建一个使用相机的应用程序。我注意到,在我的代码中,我使用了大量的公共(public)变量来与控制实际 View 的苹果 CameraViewController 和我的 CameraVC 进行通信。例如:

public var _photoButton: UIButton!

public var _imageTaken: UIImageView!

public var _sendBtn: UIButton!

public var _dismissBtn: UIButton!

public var _videoDismissBtn: UIButton!

public var _videoSendBtn: UIButton!

public var photoData: Dictionary<String, Data>!

我使用这些变量来连接 UI 上执行特殊任务的按钮,以及将图像/视频数据传递到我的其他 View Controller 。 (关闭当前图像/视频,将当前图像/视频发送到服务器)。我试图让自己使用最佳实践,但我想不出更好的解决方案。使用这些公共(public)变量会对我的应用程序的性能产生什么影响,如果可能的话,我怎样才能写得更好?

示例:CameraVC(不是苹果 CameraViewController)

   @IBAction func sendBtnPressed(_ sender: Any) {
performSegue(withIdentifier: "FriendsVC", sender: ["snapshotData": photoData.removeValue(forKey: "photoData")])
self.view.insertSubview(previewView, aboveSubview: imageTaken)
self.sendBtn.isHidden = true
self.sendBtn.isEnabled = false
self.dismissBtn.isEnabled = false
self.dismissBtn.isHidden = true
}

@IBAction func dismissBtnPressed(_ sender: Any) {
self.view.insertSubview(previewView, aboveSubview: imageTaken)
self.sendBtn.isHidden = true
self.sendBtn.isEnabled = false
self.dismissBtn.isEnabled = false
self.dismissBtn.isHidden = true
self.photoData = nil
return
}

最佳答案

这些属性是公共(public)的这一事实不会影响性能。当您设置 private 而不是 public 时,它在方法中更相关,这样编译器可以确定该方法是 final

性能的另一点 - 如果您将数据发送到服务器,正如您提到的那样,强烈建议您在后台队列中异步执行此操作(GCD)(如果您还没有这样做的话)。

至于以其他方式实现 - 需要了解整体情况。从我在这里看到的,您从字典中发送一个值以及 segue 和 enbaling/disable 按钮,这没有任何问题。只要你不在主线程上克隆/发送大部分图片/视频数据到服务器就可以。

最后一个提示 - 并不总是需要 PerformSegue - 如果您想将数据传递到下一个 ViewController 并调用它 - 您可以使用导航 Controller (当然,您的初始 View Controller 需要嵌入到导航 Controller 中)像这样的东西:

if let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "NextViewController") as? NextViewController{
if let navigator = self.navigationController{
vc.someProperty = someDataToPass

navigator.pushViewController(vc, animated: true)}}

关于ios - 过度使用公共(public)变量在两个 ViewController 之间进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45429253/

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