HTTPS

概述

HTTPS并非是应用层的一种新协议。只是HTTP通信接口部分用SSL和TSL协议代替而已。通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。简言之,所谓HTTPS,其实就是身披SSL协议这层外壳的HTTP。

HTTP缺点

  • 通信使用明文(不加密),内容可能会被窃听。
  • 不验证通信方的身份,因此有可能遭遇伪装。
  • 无法证明报文的完整性,所以有可能已遭篡改。

    Read More

iOS挖矿了解一下?

区块链与挖矿

如果要问你2018年互联网什么最火?肯定是区块链啊!有多火?听说前几天区块链大会上毛爷爷都现身了😅。区块链是啥,百度百科的解释是区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。😯好复杂有木有,那区块链能干啥?那很多啦,比如说发币、挖矿还有🤐。再说炒币,听说是韭菜割了一茬又一茬,郁郁葱葱,野火烧不尽啊。

说正事,iOS设备怎么挖矿。我使用的是xmrig,官方提供了window平台的支持,提供了MacOS等平台的编译方法,唯独没有iOS和Android设备,可是我想用我的iPhone挖一挖啊,不中,我得看看能不能编译出来iOS的包。

Read More

ReactNative实践

关于React-Native

React-Native号称是跨平台开发且具有原生应用的体验,早在两年前我曾经尝试过使用React-Native,但是环境搭建过程及其复杂,可参见我之前写的文章:iOS现有项目手动集成ReactNative。最近公司新开项目需要实现iOS和Android平台热更新方案,以便快速开展业务。本文用来梳理React-Native在iOS上的一些实践。包括如下内容:

Read More

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