- 博客(11)
- 资源 (2)
- 收藏
- 关注

原创 利用runtime处理数组越界导致的Crash
前言 前几天查看后台bug统计数据,又发现了一个数组越界导致的崩溃问题,非常让人头疼,因为数组越界问题已经在业务层做了无数的判空处理,每次出现问题之后都会进行反复测试,不断优化,自以为这个版本是不可能出现问题的,然而...... 思路 实现 总结 ...
2020-11-20 14:49:33
494

原创 一个打开/关闭书籍动画(转场动画)
最近一直在写小说阅读器相关内容,看了当前热门的几款小说APP,发现打开/关闭书籍的时候都加了一个自定义转场动画,但是我们当前的项目是没有的。作为一个对界面效果有独特追求的开发者来说,绝对不能忍,加班也要加上去! 大概看了一下动画效果,发现难度其实不大,简单归纳为下面几步: 1、设置两个视图,一个为书籍封面截图,另一个为打开书籍内容截图,保存书籍封面视图; 2、打开书籍时:书籍封面沿书脊位置(左边Y轴)逆时针旋转90度并放大到书籍...
2020-10-13 11:28:15
1006

原创 使用GCD和NSOperation的自我感悟(部分用法和tips)
博主作为一个四年多的老iOS程序开发,用到GCD和NSOperation的场景太多了。该篇文章对于这两种多线程技术做一个小总结,当然有人会说多线程技术也经常用到NSThread,为什么不一起总结。博主开发中使用多线程的时候基本上选择GCD或者NSOperation,用到NSThread实在太少,至于NSThread的原理和使用大家可以去网上查找。网上对于这两种技术的介绍和对比可以找出...
2020-04-22 15:04:39
194

原创 制作Cocoapods私有库
为自己写好的代码添加pod管理是非常有必要的, 既方便自己的项目管理,也方便他人调用自己的代码模块,这里说一下Cocoapods私有库的制作。一、远端创建存放项目工程文件仓库(github、gitlab、码云等)这里使用github创建XPYTestLib项目,Private需要收费,暂时使用Public。.gitignore和license文件可以不选,因为后面创建本地库的时候会自动创建...
2020-01-02 15:28:21
406

原创 Runtime应用场景总结
一、方法交换(Method Swizzling)方法交换作为runtime最常用的场景之一,也被称为OC中的黑魔法。主要用到的方法://获取类方法class_getClassMethod(Class _Nullable cls, SEL _Nonnull name)//获取实例方法class_getInstanceMethod(Class _Nullable cls, SEL _...
2019-12-17 15:56:26
772
原创 iOS 利用归档(解档)保存(获取)用户信息
说起用户信息保存问题,每个开发者应该都有很多不一样的见解。iOS提供了多种本地数据持久化方式,常用的有沙盒机制、本地数据库等。使用最多,也最简单方便的估计就是NSUserDefaults了。NSUserDefaults也是沙盒机制的一种,他的沙盒路径是Library->Preferences,因为大家用的都多,这里就不介绍了。处于安全性考虑,一般我们保存的用户信息并不会包括账号、密码这类敏感数据(这类信息可以保存到钥匙串,或者加密以后再保存),博主这里说的用户信息指的就是类似用户昵称、头...
2020-07-24 11:12:03
1033
转载 (转载)Aspects深度解析-iOS面向切面编程
背景简述在日常开发过程中是否有过这样的需求:不修改原来的函数,但是又想在函数的执行前后插入一些代码。这个方式就是面向切面(AOP),在iOS开发中比较知名的框架就是Aspects,而饿了么新出的Stinger框架先不讨论,Aspects的源码精炼巧妙,很值得学习深究,本文主要从源码和应用层面来介绍下源码解析先提出几个问题带着问题去阅读更容易理解Aspects实现的核心原理是什么 哪些方法不能被hook hook的操作是否可以只对某个实例生效,对同一个类的其他实例不生效? blo
2020-05-22 11:20:29
243
原创 实现功能:从相册多选图片,再对图片进行拖动排序、预览、删除,类似微信朋友圈发布图片功能
该文章实现一个简单功能,先从相册中选择图片到图片展示页面,展示页面可对图片进行拖动排序、直接删除、预览删除。(多图选择使用三方框架TZImagePickerController,大图预览使用第三方框架YBImageBrowser)一、单张图片Cell:XPYImagePickerCollectionViewCell(1)XPYImagePickerCollectionViewCel...
2019-12-03 10:42:51
1131
原创 全局方式解决UIScrollView的contentInset导致的空白问题(SwizzleMethod)
实际项目开发过程中遇到iOS 11中出现的UIScrollView设置问题,经常会需要在每一个用到ScrollView的地方添加上相应代码,这样处理不利于以后项目发展。而全局设置方法有多种,可以选择让项目中的控制器继承同一个控制器,在该控制器下设置,也可以创建控制器分类进行设置,我在这里记录一下创建控制器分类使用方法交换(SwizzleMethod)全局设置的过程。使用xpy_vi...
2019-10-28 17:29:50
1607
原创 Swift主要关键字说明
1.class、struct、enum、typealias、protocol、extensionclass:声明类或者类方法class XPYPerson: NSObject { class func eat() { print("吃东西") }}struct:声明结构体,结构体中可以有成员变量和成员方法,相当于轻量化的类,结构体中的成员变量...
2019-09-17 17:40:54
244
原创 ReactNative环境搭建
一、安装Node和Watchman(使用Homebrew)打开终端brew install node //安装nodebrew upgrade node //更新node,保证node版本在10.0以上,我用的12.8.0brew install watchman //安装watchman安装完node,设置npm镜像npm config set registry http...
2019-09-09 10:23:11
140
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人