iOS传参分析

iOS传参分析

通过此篇文章,您可以了解x86_64,arm32,arm64下各种函数调用的参数传递的方式;可以了解为什么arm64位下通过可变形参函数hookoc方法取值会crash以及怎么解决的思考;基于参数传递原理,此demo对应的BNRHookAction类,可实现无侵入式埋点。

OC交换方法

OC交换方法

需求:

  • 项目中要做无侵入式埋点
  • 项目中要拦截某些函数,而让其执行特定代码后,不再执行原函数(如在做项目页面路由时,所有由其他app(或网页)唤起本app的页面,都用window.rootViewController present一个navigationController来呈现,nav的rootVC就是要呈现的这个界面,所以需要hook这个VC的返回按钮函数,当次VC不是nav的rootVC时,用pop返回,当是rootVC时用dismiss返回)
  • 让所有被hook的函数都指向同一个函数

源码和使用说明地址

iOS音频编程之混音

iOS音频编程之混音

需求:多个音频源混合后输出,

项目说明:项目中采样4路音频源混合,音频源包含44100hz采样率,3000hz采样率,单声道和立体声;使用MixerVoiceHandle封装混音处理,用户只需要初始化音频文件路径数组,调用启动混音接口,就可实现多路音频混合输出

AirPlay

AirPlay

需求:绕过系统限制,自动选择支持AirPlay的设备

Airplay基础知识

要调用出AirPlay列表需要使用到MPVolumeView控件,当系统检测到网络环境中有支持AirPlay的设备时才会出现AirPlay图标,用户点击这个图标,呼出支持AirPlay的设备列表。

创建私有库

Cocoapoads建立私有库

该教程展示如何在github上建立自己的私有库,按照此教程也可应用在公司的git服务器上,使用pod对自己编写的库进行管理。

在github上新建仓库

  1. 在github上新建MySpecs仓库(您可以命名为任意名字),并新建
    TestLib(您可以新建任意多个仓库,此仓库中的 工程便是您用pod
    管理的第三方库)仓库。
  2. git clone https://github.com/xxxx/MySpecs.gitgit clone https://github.com/xxxx/TestLib.git(将地址换成您的仓库地址)。

ScrollView自动布局

该篇文章将讲述对UIScrollView如何运用autoLayout, 结合实例,根据显示的内容,自动调整scrollView的contentSize

新建工程

在Storyboard中的View Controller的view中拖入一个scrollView,并在scrollView中添加一个UIView,层级关系如下图(包含所有添加的约束条件)

constrait