iOS今天的扩展导致程序以退出代码:0结束



我使用的是Xcode 8.0, Swift 3.

我今天做扩展显示文本和图像,但经常导致这个消息和今天的扩展不工作。很少工作。

程序以退出码结束:0

我将数据保存在领域中,今天使用data(字符串,图像)扩展

是否导致内存限制?所以,我怎么能减少内存关于今天的扩展使用??

我的扩展码:

class Information: Object {
    dynamic var Name = ""
    dynamic var Image : NSData?
    override class func primaryKey() -> String {
        return "Name"
    }
}
class TodayViewController: UIViewController, NCWidgetProviding {
    var realm : Realm?
    var results : Results<Information>?
    var index = 0
    @IBOutlet var NameLabel: UILabel!
    @IBOutlet var ImageView: UIImageView!
    @IBAction func leftAction(_ sender: UIButton) {
        guard index == 0 else {
            index -= 1
            loadData(index: index)
            return
        }
    }
    @IBAction func rightAction(_ sender: UIButton) {
        guard index == (results?.count)! - 1 else {
            index += 1
            loadData(index: index)
            return
        }
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        setRealmFileURL()
        if #available(iOSApplicationExtension 10.0, *) {
            extensionContext?.widgetLargestAvailableDisplayMode = .expanded
        }else{
            preferredContentSize = CGSize(width: 0, height: 250)
        }
        // Do any additional setup after loading the view from its nib.
    }
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        realm = try! Realm()
        results = try! Realm().objects(Information.self) 
        loadData(index: index)
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    private func widgetPerformUpdate(completionHandler: ((NCUpdateResult) -> Void)) {
        // Perform any setup necessary in order to update the view.
        // If an error is encountered, use NCUpdateResult.Failed
        // If there's no update required, use NCUpdateResult.NoData
        // If there's an update, use NCUpdateResult.NewData
        loadData(index: index)
        completionHandler(NCUpdateResult.newData)
    }
    func loadData(index: Int){
        guard results?.count == 0 else {
            let objects = results?[index]
            NameLabel.text = objects?.Name
            ImageView.image = UIImage(data: (objects?.Image)! as Data, scale: 0.1)
            return
        }
    }
    @available(iOSApplicationExtension 10.0, *)
    func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
        preferredContentSize = CGSize(width: 0, height: 250)
    }
    func setRealmFileURL(){
        var config = Realm.Configuration(encryptionKey: getKey() as Data)
        let directory = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.xxx")
        let realmPath = directory?.appendingPathComponent("xxx.realm")
        config.fileURL = realmPath
        Realm.Configuration.defaultConfiguration = config
    }
}

主要是内存问题。

除非应用需要改变,否则不要使用

completionHandler(NCUpdateResult.NewData)

而不是使用

completionHandler(NCUpdateResult.noData)

相关内容

最新更新