
技术
xiangxiaopenyou
Geek
展开
-
iOS 利用归档(解档)保存(获取)用户信息
说起用户信息保存问题,每个开发者应该都有很多不一样的见解。iOS提供了多种本地数据持久化方式,常用的有沙盒机制、本地数据库等。使用最多,也最简单方便的估计就是NSUserDefaults了。NSUserDefaults也是沙盒机制的一种,他的沙盒路径是Library->Preferences,因为大家用的都多,这里就不介绍了。处于安全性考虑,一般我们保存的用户信息并不会包括账号、密码这类敏感数据(这类信息可以保存到钥匙串,或者加密以后再保存),博主这里说的用户信息指的就是类似用户昵称、头...原创 2020-07-24 11:12:03 · 1039 阅读 · 0 评论 -
(转载)Aspects深度解析-iOS面向切面编程
背景简述在日常开发过程中是否有过这样的需求:不修改原来的函数,但是又想在函数的执行前后插入一些代码。这个方式就是面向切面(AOP),在iOS开发中比较知名的框架就是Aspects,而饿了么新出的Stinger框架先不讨论,Aspects的源码精炼巧妙,很值得学习深究,本文主要从源码和应用层面来介绍下源码解析先提出几个问题带着问题去阅读更容易理解Aspects实现的核心原理是什么 哪些方法不能被hook hook的操作是否可以只对某个实例生效,对同一个类的其他实例不生效? blo转载 2020-05-22 11:20:29 · 250 阅读 · 0 评论 -
使用GCD和NSOperation的自我感悟(部分用法和tips)
博主作为一个四年多的老iOS程序开发,用到GCD和NSOperation的场景太多了。该篇文章对于这两种多线程技术做一个小总结,当然有人会说多线程技术也经常用到NSThread,为什么不一起总结。博主开发中使用多线程的时候基本上选择GCD或者NSOperation,用到NSThread实在太少,至于NSThread的原理和使用大家可以去网上查找。网上对于这两种技术的介绍和对比可以找出...原创 2020-04-22 15:04:39 · 195 阅读 · 0 评论 -
制作Cocoapods私有库
为自己写好的代码添加pod管理是非常有必要的, 既方便自己的项目管理,也方便他人调用自己的代码模块,这里说一下Cocoapods私有库的制作。一、远端创建存放项目工程文件仓库(github、gitlab、码云等)这里使用github创建XPYTestLib项目,Private需要收费,暂时使用Public。.gitignore和license文件可以不选,因为后面创建本地库的时候会自动创建...原创 2020-01-02 15:28:21 · 415 阅读 · 0 评论 -
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 · 777 阅读 · 0 评论 -
实现功能:从相册多选图片,再对图片进行拖动排序、预览、删除,类似微信朋友圈发布图片功能
该文章实现一个简单功能,先从相册中选择图片到图片展示页面,展示页面可对图片进行拖动排序、直接删除、预览删除。(多图选择使用三方框架TZImagePickerController,大图预览使用第三方框架YBImageBrowser)一、单张图片Cell:XPYImagePickerCollectionViewCell(1)XPYImagePickerCollectionViewCel...原创 2019-12-03 10:42:51 · 1137 阅读 · 0 评论 -
全局方式解决UIScrollView的contentInset导致的空白问题(SwizzleMethod)
实际项目开发过程中遇到iOS 11中出现的UIScrollView设置问题,经常会需要在每一个用到ScrollView的地方添加上相应代码,这样处理不利于以后项目发展。而全局设置方法有多种,可以选择让项目中的控制器继承同一个控制器,在该控制器下设置,也可以创建控制器分类进行设置,我在这里记录一下创建控制器分类使用方法交换(SwizzleMethod)全局设置的过程。使用xpy_vi...原创 2019-10-28 17:29:50 · 1613 阅读 · 0 评论 -
Swift主要关键字说明
1.class、struct、enum、typealias、protocol、extensionclass:声明类或者类方法class XPYPerson: NSObject { class func eat() { print("吃东西") }}struct:声明结构体,结构体中可以有成员变量和成员方法,相当于轻量化的类,结构体中的成员变量...原创 2019-09-17 17:40:54 · 248 阅读 · 0 评论 -
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 · 145 阅读 · 0 评论