2025年Swit实战技巧

Swit实战技巧Swift 实战技巧 从 OC 转战到 Swift 差别还是蛮大的 本文记录了我再从 OC 转到 Swift 开发过程中遇到的一些问题 然后把我遇到的这些问题记录形成文章 大体上是一些 Swift 语言下面的一些技巧 希望对有需要的人有帮助 OC 调用方法的处理 给 OC 调用的方法需要添加 objc 标记 一般的 action target 的处理方法

大家好,我是讯享网,很高兴认识大家。

Swift实战技巧

从OC转战到Swift,差别还是蛮大的,本文记录了我再从OC转到Swift开发过程中遇到的一些问题,然后把我遇到的这些问题记录形成文章,大体上是一些Swift语言下面的一些技巧,希望对有需要的人有帮助

  • OC调用方法的处理

给OC调用的方法需要添加@objc标记,一般的action-target的处理方法,通知的处理方法等需要添加@objc标记

@objc func onRefresh(){ self.refreshCallback?() } 

讯享网
  • 处理SEL选择子
讯享网`#selector(self.onRefresh))` 

更加详细的介绍可以看这篇文章: http://swifter.tips/selector/


讯享网

下面是使用MJRefresh给mj_headermj_footer添加回调处理函数的例子

self.mj_header.setRefreshingTarget(self, refreshingAction: #selector(self.onRefresh)) self.mj_footer.setRefreshingTarget(self, refreshingAction: #selector(self.onLoadMore)) 
  • try关键字的使用

可能发生异常的方法使用try?方法进行可选捕获异常

讯享网let jsonStr=try?String(contentsOfFile: jsonPath!) 
  • 类对象参数和类对象的参数值

AnyClass作为方法的形参,类名称.self(modelClass.self)作为实参

 func registerCellNib(nib:UINib,modelClass:AnyClass){ self.register(nib, forCellReuseIdentifier: String(describing:modelClass.self)) } ... self.tableView?.registerCellNib(nib: R.nib.gameCell(), modelClass: GameModel.self) 
  • 线程间调用

主线程使用DispatchQueue.main,全局的子线程使用DispatchQueue.global(),方法可以使用syncasyncasyncAfter等等

下面是网络请求线程间调用的例子

讯享网let _ = URLSession.shared.dataTask(with: url, completionHandler: { [weak self] (data, response, error) in guard let weakSelf = self else { return } if error == nil { if let json = try? JSONSerialization.jsonObject(with: data!, options: .mutableContainers) { let data = json
小讯
上一篇 2025-01-08 09:23
下一篇 2025-01-06 09:39

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/22459.html