最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】swift只运行一次dispatch_once

Swift crifan 3921浏览 0评论

需要实现只运行一次

swift dispatch_once

Example of using dispatch_once() in Swift

Using a dispatch_once singleton model in Swift – Stack Overflow

然后出错:

[已解决]swift中dispatch_once出错:& used with non-inout argument of type UnsafeMutablePointer<dispatch_once_t> (aka UnsafeMutablePointer<Int>)

然后用代码:

//
//  ImageBubbleView.swift
//  JianDao
//
//  Created by licrifan on 16/2/26.
//  Copyright © 2016 licrifan. All rights reserved.
//
import UIKit
class ImageBubbleView: UIView {
    var resMsg:ResourceMessage
   
    static var refreshImgToken:dispatch_once_t = 0
    init(frame:CGRect, resourceMessage:ResourceMessage){
        self.resMsg = resourceMessage
        super.init(frame: frame)
。。。
                            ImageBubbleView.doOnceUpdateMessageCell(self.resMsg)
。。。
        }
    }
    
    class func doOnceUpdateMessageCell(resMsg:ResourceMessage) {
        print("doOnceUpdateMessageCell ")
        dispatch_once(&self.refreshImgToken) {
            delayDispatchInBackgroundThread(0.2, thingsTodo: {
                print("resMsg.name=\(resMsg.name), self.refreshImgToken=\(self.refreshImgToken)")
                。。。
            })
        }
    }
}

效果是:

的确只执行了一次:

之前的图片加载完毕后,异常:

然后只需要刷新一次即可:

不过,此处是希望每个图片都会执行一次的,而此处的ImageBubbleView这个类,全局只能执行一次,没法满足要求,最后改为自己使用bool变量来实现对应的效果:

转载请注明:在路上 » 【已解决】swift只运行一次dispatch_once

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
91 queries in 0.209 seconds, using 22.10MB memory