iOS多线程编程三:Operation和OperationQueue

概述

本文是多线程的第三篇文章,主要讲解Operation和OperationQueue。看资料的时候发现了一篇特别好的教程,随性就翻译一下,权当自己做个总结。本文主要内容翻译自raywenderlichoperation and operationqueue tutorial in swift。原文链接点这里

不管是在Mac还是iOS系统上,当用户使用你的app点击按钮或者编辑文本的时候突然你的app卡死,界面变得无法响应,这对用户来讲是非常糟糕的体验。 在Mac系统上用户不得不盯着彩色的加载框等待恢复。在iOS系统上连加载框都看不到。用户希望在他们触摸屏幕之后应用程序能立即做出响应。卡顿的app让用户感到这个app很笨重,反应太慢。这会造成用户在AppStore中给应用差评。

Read More

设计模式:原型模式

概述

我们知道设计模式方面的知识是一个初中级工程师进阶高级工程师过程中一道无法跨越的屏障,学好它并将它应用到自己的项目中是一件充满乐趣和成就感的事情。本文将讲述设计模式中的原型模式,通过阅读本文你将收获如下内容:

  • 什么是原型模式以及它的作用。
  • 什么时间使用原型模式。
  • Objective-C中深拷贝和浅拷贝
  • 原型模式的具体实践。

Read More

iOS多线程编程二

概述

上一篇文章我介绍了NSThread相关的API以及使用方法,本文我们继续来讲解另一套线程相关的API, 那就是GCD。我们在开发过程中用的最多也是GCD,面试中问道最多的也是GCD。通过阅读本文,希望您对GCD的理解有新的收获。本文将讲解一下内容:

  • 队列
  • 同步与异步
  • 举例

个人认为,掌握好GCD最好的方式是彻底理解队列、同步、异步这些概念。而不是去死记硬背。死记硬背固然能应付一时,当终究不是正道,下面我们来一一解释这些概念。

Read More

iOS多线程系列一

概述

本文主要讲解iOS线程相关的知识,对于一个iOS开发者,如果想保证自己所开发的应用流畅的运行,线程的知识是无法绕开的。通过阅读本文,你讲了解到如下知识:

  • 进程和线程
  • 线程的生命周期
  • NSThread基本用法
  • 线程间的通信

Read More

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为项目名称