Moya基本用法

Moya简介

一句话来讲,Moya是对Alamofire的封装,让开发人员更加优雅的使用Alamofire。

基本用法

  1. 定义接口枚举

    1
    2
    3
    4
    public enum HFAPI {
    case login(String, String, String) //登录接口
    case smscode(String) //登录,发送验证码
    }

Read More

2018-05-20周问题汇总

pod init报错

错误信息如下

1
RuntimeError - [Xcodeproj] Unknown object version. #7697

在issues中的讨论中给出了很多解决方案,最终我的解决方案是修改项目的配置,我的Xcode版本是9.3
修改项目配置
具体讨论参考:Github

libuv移植的iOS平台

libuv是一个跨平台的,高性能的,事件驱动的I/O库。具体教程见libuv

Read More

iOS私有Api查找

背景

新发版的App因为调用了私有com.apple.springboard.lockcomplete被拒
邮件信息

解决办法

由邮件内容可知,appple建议我们使用 strings 或者 otool 命令来查找对应的内容,我使用的strings命令。具体做法如下:

  1. 打出release包到本地。
  2. 将后缀 .ipa 修改为 .zip
  3. 解压zip文件。
  4. 打开命令行输入 cd ~/Desktop/wkcast-ios 2018-04-25 16-12-16/test/Payload/test.app
  5. 执行 strings - -a -arch armv7 “test” > test.txt 命令。
  6. 打开 test.txt 文件搜索对应的字符串,该文件位于 wkcast-ios.app 内部,需要使用 右键->展示包内容找到它。
    注意: test为项目名称

dispatch_sync死锁问题分析

示例代码

1
2
3
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"11111");
});

在按钮的响应事件中执行如下代码,会造成死锁,简单分析一下死锁的原因:

dispatch_sync 是同步执行,该方法会阻塞线程,等到block内容执行完之后,其后面的代码才有机会执行。

如上代码,dispatch_sync将block任务提交到主队列中,等待执行。

我们知道,主队列是一个串行队列,串行队列的特点是先进先出。对于iOS而言,主队列有很多任务要执行,基本没有可能当你执行上面代码的时候,主队列中没有任何任务。

假设,执行到上述代码的时候,主队列里有3个待执行任务,这时将第四个任务(也就是上述代码的Block),提交到主队列。这时候,主队列中有四个任务,主队列要先执行前三个任务,才能执行第四个任务,但是dispatch_sync阻塞函数,主队列要先执行完第四个任务,主队列才有时机去执行前三个任务。所以代码处于死锁状态。

ios架构学习-View层

概述

最近在读casatwy的博客,收获良多,从中学习了很多知识,本文一方面是梳理自己学到的知识,另一方是形成自己的代码风格。本文重度参考casatwy的博客,参考以及相关阅读模块贴出来相关链接,都是极其优秀的文章,希望你也能从中有所收获。

Read More

2018年度计划

未来

###生活
今年可能是我生活变化最大的一年,我结婚了。2018年2月14日,我和我的女朋友领证。婚姻意味着自己不能洒脱不计后果的生活了,身上莫名的多了一份责任,有时候不自觉的去考虑家庭、房子、车子、父母、孩子这些问题,有时候会莫名的沮丧,压力好大,有时候莫名的充满激情,生活真美好。不知道是自己年纪大了,还是怎地,以前只会不顾后果的干,现在却考虑考虑,犹豫犹豫。不管怎样,生活对于我已经不薄了,我把最爱的女朋友变成了老婆。18年,我不希望生活有巨大的改变,稳稳当当的度过我这一年就好。当然还是要定一些小目标。

Read More

iOS电池相关API

iOS电池相关API

iOS系统中关于电池的Api较少,据本人了解目前仅有两种电视相关的Api,一种是电量状态,一种是电池状态。

开启电池监听

在使用电池相关API的时候需要先开启电池监听,开启代码如下:

1
UIDevice.current.isBatteryMonitoringEnabled = true

Read More

WKWebView使用小感

前言

Apple 在iOS8上发布了WKWebView, 旨在替代UIWebView, 然后到目前为止在WKWebView的使用上依然有很多坑。本文主要记录一下最近关于WKWebView使用上的一些感想。欢迎读者留言并讨论,共同提高我们的开发效率。

WKWebView的优势

  • 相比较于UIWebView其更加高效,内存占有率更低。
  • 比较方便的实现滑动返回功能。
  • 在JS代码注入方法,特别是向Frame里面注入JS有较高的优势。

    Read More