【问题标题】:Where should i put the function?我应该把函数放在哪里?
【发布时间】:2016-08-26 13:39:43
【问题描述】:

我创建了一个函数,它使用UIDevice 检查 iPhone 是否正在充电。我应该在哪里调用该函数,以便它监控整个应用会话的状态? The Function is called "connectivityStatus",目前在viewWillAppear

语言:Swift 3
平台:iOS 10(使用 UIDevice)

【问题讨论】:

标签: ios swift uidevice


【解决方案1】:

Hari 请在 Appdelegate.h 中定义一个函数,并在 Appdelegate.m 中给出该函数的定义。现在您可以像这样 [[Appdelegate appdelegate] "Name of your function"] 一样通过应用程序使用此功能。我希望这将有所帮助。将以下代码粘贴到 Appdelegate.m 中以使用 appdelegate

+(AppDelegate*)appDelegate
{
    return (AppDelegate*)[UIApplication sharedApplication].delegate;
}

迅速

class func appDelegate() -> AppDelegate {
return (UIApplication.sharedApplication().delegate as! AppDelegate)
 }

【讨论】:

  • 谢谢,请提供 Swift 版本!
  • @Hari - 检查答案
  • @xxxy2j - 为什么你说喜欢,相信自己,你需要知道你的价值,永远不要问喜欢Pls accept this answers,这取决于提问者
【解决方案2】:

或者你可以使用Timer():

// in viewDidAppear()
connectivityStatus()
var timer = Timer.scheduledTimer(timeInterval: 2.0, target: self, selector: #selector(YourClassName.function) , userInfo: nil, repeats: true)

//outside viewDidAppear()
func function(){
    connectivityStatus()
}

每 2 秒检查一次状态!希望这会有所帮助!

注意:

如果您决定更频繁地更新它,您可以将值从 timeInterval: 更改为更小的值,但请注意,如果正在进行大量进程,您的应用可能会变慢!

【讨论】:

  • 非常感谢!像魅力一样工作!
  • 我不建议以 0.5 的间隔使用 Timer。这会经常调用该函数并可能会减慢您的应用程序
  • @penatheboss 确实,使用基于事件的机制(在这种情况下为通知)几乎总是更好的选择。
  • 使用定时器也可以,但时间间隔至少要3个
  • 我知道这不是最佳实践,但只要他想经常更新它并且没有那么多代码,就可以了。我将更新答案,以免过程变得过于混乱和缓慢。感谢您的 cmets!
【解决方案3】:

如果您想在整个应用程序生命周期中对其进行监控,请在 AppDelegate.swift

中的以下方法中进行
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    return true
}

【讨论】:

    【解决方案4】:

    你可以管理类似的东西,

    在你的appdelegate

      func connectivityStatus() -> Bool {
        // define your method body here. I assume return type as bool. you can customize as per your need
    
        return true // or false as per your requirement
    }
    

    现在在你想调用这个函数的任何视图控制器中,你都可以这样做,

      let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    
    
     appDelegate.connectivityStatus() // it will return bool as per your defination in method in appdelegate
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-30
      • 2016-08-25
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 2010-12-24
      相关资源
      最近更新 更多