摘要: 一:GitHub新建仓库,并clone到本地 1、注册GitHub账号并登录 2、右上方点击+,新建仓库(仓库名字(Repository name)、仓库权限(Public)、readme、license) 创建完成如下图: 3、检出仓库 新建一个文件夹SDK: 打开终端: 将FireRadarSD 阅读全文
posted @ 2017-12-22 19:19 丷dante丶灬 阅读(663) 评论(0) 推荐(0) 编辑
摘要: 代码调试好了开始打包成sdk,下面是将要打包的FRSDK代码(FRSDK.h暴露在外面有别人调用) 1.创建新工程(Xcode File-New-Project) 2.把下面的红色框的东西移除 3.将原工程里调试好的FRSDK代码copy到此工程后为下图 4.接下来我们选择出来需要暴露出来的头文件 阅读全文
posted @ 2017-12-12 18:55 丷dante丶灬 阅读(540) 评论(0) 推荐(0) 编辑
摘要: 代码调试好了开始打包成sdk,下面是将要打包的FRSDK代码(FRSDK.h暴露在外面有别人调用) 1.创建新工程(Xcode File-New-Project) 2.把下面的红色框的东西移除 3.将原工程里调试好的FRSDK代码copy到此工程后为下图 4.接下来我们选择出来需要暴露出来的头文件 阅读全文
posted @ 2017-10-19 16:21 丷dante丶灬 阅读(4523) 评论(0) 推荐(0) 编辑
摘要: 起初,对接的友盟分享到微信好友,出现bug,app——跳到微信——跳回app,无法进行分享 后来,去掉友盟,直接调用微信原生分享,出现bug,app——跳到微信——跳回app——跳到微信,能分享但是有二次跳转bug。 查找资料,调用微信通用链接自检函数 WXApi.checkUniversalLin 阅读全文
posted @ 2023-02-02 15:13 丷dante丶灬 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 1.tableview必须设置预估行高和自动计算高度 // 自动计算行高 tableView.rowHeight = UITableView.automaticDimension // 设置预估行高, 必须要写, 否则打印垃圾log日志, 提示约束冲突 tableView.estimatedRowH 阅读全文
posted @ 2022-12-08 17:31 丷dante丶灬 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 之前的获得状态栏高度代码是 func kStatusBarHeight() -> CGFloat { var statusBarHeight: CGFloat = 0 if #available(iOS 13.0, *) { let statusManager = UIApplication.sha 阅读全文
posted @ 2022-10-26 15:58 丷dante丶灬 阅读(1415) 评论(0) 推荐(0) 编辑
摘要: Reactor 优点:就是将业务逻辑从View中抽离出来,可以让我们代码分工变的更加清晰明朗,多人开发时也便于后期的管理和维护。原理:由用户行为转为页面状态。 缺点:学习成本高;多写很多代码; ReactorKit是一个面向响应式单向 Swift 应用程序架构的框架。在 ReactorKit 框架中 阅读全文
posted @ 2022-10-25 17:32 丷dante丶灬 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 导入方式: https://github.com/mac-cain13/R.swift 调用方式: let view = UIImageView(image: R.image.right_arrow()) right_arrow 为导入到工程中图片的名字 阅读全文
posted @ 2022-10-19 14:04 丷dante丶灬 阅读(14) 评论(0) 推荐(0) 编辑
摘要: var和let、变量常量 final、修饰的类变量函数不能继承和重写,修饰的函数为直接派发 struct和enum和class、结构体和枚举为值类型,类为引用类型 override、重写 deinit、反初始化函数 mutating、结构体和枚举里,函数里修改外部变量时需要这个关键字修饰函数 laz 阅读全文
posted @ 2022-09-19 11:38 丷dante丶灬 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 在Swift中,class依然可以使用关联对象默认情况,extension不可以增加存储属性借助关联对象,可以实现类似extension为class增加存储属性的效果 class Person {} extension Person { private static var AGE_KEY: Voi 阅读全文
posted @ 2022-09-19 11:01 丷dante丶灬 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 1、weak也是我们OC中的一种解决循环引用的方式,在Swift中使用weak修饰的实例变量默认为可选类型,所以在使用weak后p对象会成为可选类型,在使用的时候需要使用?或者! func test() { var p = Person() p.myClourse = { [weak p] in p 阅读全文
posted @ 2022-09-15 09:52 丷dante丶灬 阅读(51) 评论(0) 推荐(0) 编辑
摘要: @optional 和 @required 是 Objective-C 中特有的关键字。 Swift中,默认所有方法在协议中都是必须实现的。而且,协议里方法不可以直接定义 optional。先给出两种解决方案: 在协议和方法前都加上 @objc 关键字,然后再在方法前加上 optional 关键字。 阅读全文
posted @ 2022-09-02 14:22 丷dante丶灬 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 1.什么情况下用分类?分类的优缺点?分类怎么用属性?关联对象的原理?关联策略?分类怎么实现一个weak属性? 2.消息发送流程?消息转发流程?runtime的用处? 3.直播分辨率,码率,帧率,花屏原因,卡顿原因 4.启动时长优化?包体积优化? 5.runloop与线程,runloop与autore 阅读全文
posted @ 2022-08-25 11:34 丷dante丶灬 阅读(111) 评论(0) 推荐(0) 编辑