-
事件传递和响应者链
目录 事件传递 响应者链事件传递1、事件传递1、iOS 检测到手指触摸,打包成一个UIEvent对象 2、springBoard 3、通过端口传递给当前进程 4、触发sorce1回调 5、soruce0回调 6、放入当前活动Application的事件队列 7、UIApplication 会从事件队列中取出触摸事件并传递给单例的 UIWindow 来处理 8、UIWindow 对象首先会使用 hitTest:withEvent:方法 9、方法内部调用pointIns...…
-
权限
目录 相册权限 相机权限 定位权限 NFC权限相册权限+ (void)photosWithIsShowNoAuthorizedAlert:(BOOL)isShow isOnlyAdd:(BOOL)isOnlyAdd authorized:(void(^)(BOOL isAuthorized))authorized { /** PHAuthoriza...…
-
深色模式适配
参考文章:iOS13原生端适配攻略(推荐) 参考文章:iOS13 暗黑模式(Dark Mode)适配目录 深色模式 全局关闭深色模式 指定页面关闭深色模式 全局适配黑暗模式 工程适配思路深色模式针对深色模式的推出,Apple官方推荐所有三方App尽快适配。目前并没有强制App进行深色模式适配。因此深色模式适配范围现在可采用以下三种策略: 全局关闭深色模式 指定页面关闭深色模式 全局适配黑暗模式 全局关闭深色模式方案一:在项目 Info...…
-
通知与推送
参考:Lebus-2019年12月录 iOS13+Swift5通知与推送 本文是上面课程的摘要,只用于自己快速浏览.目录 常用通知 一、本地通知 二、通知的增删改查 三、自定义通知界面 四、远程通知 五、其它常用通知// 回后台通知UIKIT_EXTERN NSNotificationName const UIApplicationDidEnterBackgroundNotification // 回前台通知UIKIT_EXTERN NSNotificationName...…
-
dyld分析
目录 什么是dyld dyld加载流程 符号绑定什么是dylddyld(the dynamic link editor)是苹果的动态链接器,是苹果操作系统一个重要组成部分,在系统内核做好程序准备工作之后,交由dyld负责余下的工作。dyld加载所有的库和可执行文件。dyld加载流程一、程序执行从_dyld_star开始在工程任一个类的load方法打断点,看下调用栈(lldb) bt* thread #1, queue = 'com.apple.main-thread', stop r...…
-
AFN源码分析(二)
本篇来分析下AFN加载图片的源码。UIImageView+AFNetworking代码如下:[self.imageView setImageWithURL:[NSURL URLWithString:self.imageUrl] placeholderImage:nil];目录 缓存处理 下载器 调用实现缓存处理缓存处理的代码逻辑在下面文件内:AFAutoPurgingImageCache.h文件 AFAutoPurgingImageCache.m文件一、AFAutoPurgingI...…
-
AFN源码分析(一)
参考文章:iOS 中对 HTTPS 证书链的验证 参考文章:SSL详解(个人理解) 参考文章:iOS网络请求认证挑战目录 单向认证 单向认证的securityPolicy 双向认证 双向认证securityPolicy AFHTTPDisposition实现 说在最后单项认证单向认证的securityPolicy一、默认方式(CA签发证书)AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];man...…
-
MachO文件
目录 什么是MachO文件 universal binary MachO文件结构什么是MachO文件一、Mach-OMach-O其实是Mach Object文件格式的缩写,是macOS、iOS、iPadOS存储程序(可执行文件)和库的文件格式,对应系统通过应用二进制接口(application binary interface,缩写为 ABI)来运行该格式的文件。ABI稳定指的是Mach-O文件的内部结构稳定了下来,相应的系统在调用解析Mach-O文件时的流程也就稳定了下来.类似于w...…
-
Atomic的安全性
参考文章:Atomic原子操作原理剖析目录 原子操作 原理原子操作所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。如果这个操作所处的层(layer)的更高层不能发现其内部实现与结构,那么这个操作是一个原子(atomic)操作。原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分。将整个操作视作一个整体是原子性的核心特征。@prop...…
-
bitcode
参考文章:关于bitcode, 知道这些就够了目录 简介 作用 生成.ll文件 Enable Bitcode简介先来看个llvm的经典图片bitcode是由LLVM引入的一种中间代码(Intermediate Representation,简称IR),它是源代码被编译为二进制机器码过程中的中间表示形态,它既不是源代码,也不是机器码。从代码组织结构上看它比较接近机器码,但是在函数和指令层面使用了很多高级语言的特性。作用在这个体系中,不同语言的源代码将会被转化为统一的bitcode...…
-
设备唯一标识
目录 iOS获取设备的唯一标识的方法总结:https://www.jianshu.com/p/686958c352f1 行者常至,为者常成!…
-
设备信息
目录 获取手机设备信息:https://www.cnblogs.com/gongyuhonglou/p/11133866.html iOS 设备型号(包括iPhone XS、XR):https://www.jianshu.com/p/1c13ac174b2f 行者常至,为者常成!…
-
指纹登录
参考文章:iOS指纹/密码鉴定 参考文章:iOS 指纹登录(TouchID)集成方案目录 TouchId与FaceId 指纹登录TouchId与FaceIdTouchId与FaceId苹果做了整合,共用一套API接口,使用起来也很方便,主要有两种安全策略LAPolicyDeviceOwnerAuthenticationWithBiometricsLAPolicyDeviceOwnerAuthentication具体的说明,就不再赘述,看文章开头的两篇参考文章,说的很详细。下面贴出...…
-
iOS重签名与防重签
目录 重签名 防重签有了前两篇 iOS签名原理、 iOS签名与验签逻辑 的理论与实践介绍,我们来看看如何对一个APP进行重签名和防止重签名。重签名一、指令实现当我们拿到一个xxx.ipa包,想要在未授权的设备上安装或者修改包内容后在设备上安装时,这时会因为验签失败导致无法安装,这时我们就需要对这个包解压得到xxx.app然后进行重签名。要对一个APP签名需要三个东西:Code Signing Entitlements:yyy.entitlements文件,提供APP的权限Cod...…
-
iOS签名与验签逻辑
参考文章:代码签名探析 参考文章:iOS代码签名及授权文件目录 签名逻辑 xcode签名配置 验签逻辑签名逻辑iOS的签名需要用到两对儿公私钥,一对儿由苹果公司提供,公钥内置在iPhone设备内,私钥在苹果后台。另一对儿由开发者提供,公钥最终会被签名成证书,私钥存储在开发者的Mac电脑内,通过xcode编译APP时会对APP进行签名,安装到手机时会进行验签,从而达到对安装包的管控。 详细内容请参阅上篇博客iOS签名原理当我们的项目编译完成后,在Products文件夹内会看到...…
-
iOS签名原理
参考文章:iOS App签名的原理 参考文章:OpenSSL与公钥私钥证书签名的千丝万缕目录 目的 最简单的实现 新的需求 加点东西 最终流程 上面的步骤对应我们平时具体操作和概念是这样的 我们平时的操作iOS的签名机制很复杂,各种证书,Provision Profile,entitlements,CertificateSigningRequest,p12,AppID,这篇文章从概念出发,一步一步推出为什么会有这么多概念,希望能有助于理解iOS的App签名的原理。 目的...…
-
background modes
参考文章:ios background modes 参考文章:后台模式 background modes目录 运行状态 background modes运行状态应用的运行状态分为以下五种:Not running 应用还没有启动,或者应用正在运行但是途中被系统停止。Inactive 当前应用正在前台运行,但是并不接收事件(当前或许正在执行其它代码)。一般每当应用要从一个状态切换到另一个不同的状态时,中途过渡会短暂停留在此状态。唯一在此状态停留时间比较长的情况是:当用户锁...…
-
(-lstdc++.6.0.9)找不到问题
参考文章:Xcode10: -lstdc++.6.0.9 not found目录 -lstdc++.6.0.9 解决方案-lstdc++.6.0.9xcode10已经废弃了libstdc++.6.0.9和libstdc++库,使用libc++库来替代。所以在xcode10中编译工程时,若工程中用到了libstdc++.6.0.9和libstdc++库,那么编译器就会报链接错误。ld: library not found for -lstdc++.6.0.9 clang: e...…
-
nil,Nil,NULL,[NSNull null]
参考文章:https://blog.csdn.net/wzzvictory/article/details/18413519目录 NULL nil Nil [NSNull null] 总结首先要说明的是,nil、Nil、NULL三个关键字和NSNull类都是表示空,只是用处不一样,具体的区别如下:NULL一、声明位置stddef.h文件二、定义#undef NULL#ifdef __cplusplus# if !defined(__MINGW32__) &&...…
-
objc编译调试
参考文章:iOS_objc4-756.2 最新源码编译调试目录 objc objc编译 objc调试objc编译很多小伙伴在探索底层的时候经常很苦恼,只能靠猜测!稍微灵活一点的小伙伴会通过 Apple 提供的源码来辅助看一下,但是很显然这不太直观!如果能够直接编译调试,像我们自己的代码直接 LLDB 调试,流程跟踪。那简直不要太爽。可以跳转下面的地址,下载苹果提供的源码 苹果官方开源代码列表按照参考教程一步一步的进行编译调试。 iOS_objc4-756.2 最新源码编译调试...…