IOS 开发
Steve_Abelieve
致虚极,守静笃。
展开
-
常用算法练习
// 字符串反转void char_reverse(char *cha) { if (strlen(cha) ==0 ) return; char *begin = cha; char *end = cha + strlen(cha) -1; while (begin <end) { char temp = *begin; *(begin++) = *end; *(end--) = temp; }}/.原创 2021-04-11 17:45:18 · 122 阅读 · 0 评论 -
【iOS开发】KVO核心原理
KVOKey-value observing的缩写KVO是Object-C 对观察者设计模式的又一实现。Apple使用了isa混写(isa-swizzling)来实现KVO的。通过setValueForKey: 是否能够使KVO生效?可以,会调用对应的setter方法。直接赋值方式呢 不能,注意事项不想让外部监听我的成员属性怎么做呢?实现类方法automaticallyNotifiesObserversForKey 方法关闭对应属性的自动通知,通过判断对应key值,返回No.原创 2020-08-25 10:11:19 · 153 阅读 · 0 评论 -
【iOS开发】Block 核心原理
目标:熟悉Block底层原理内存拷贝相关的知识如何深入学习相关概念呢?将OC代码转化成C++代码,查看其内部实现。面试过程中,每道题都是有对应分数的,一定要尽可能答的漂亮。什么是Block常见面试题:什么是Block?你对Block的调用是怎么理解的?截获变量是Block的一大特性,系统对于Block的截获是怎么实现的呢?我们添加__block修饰符做什么事情呢?什么时候需要对Block 进行一个copy操作,栈Block和堆Block是否了解呢?6.Block的循环引用1.原创 2020-08-22 23:40:24 · 199 阅读 · 0 评论 -
【iOS开发】内存管理
内存管理方案三大内存管理方案TaggerPointer 小对象(NSNumber)NONPOINTER_ISA arm64位架构下的散列表散列表是一张哈希结构的表,其包含了自旋锁,引用计数表、弱引用表。其中的引用计数表,就是用来对内存做处理的。为什么不是一个SideTable 所有的对象可能是在不同的线程创建的,对于数据的操作需要加线程安全的操作,成百上千的对象操作的时候引起效率问题。分离锁怎样实现快速分流呢SideTables的本质是一张Hash表。...原创 2020-08-17 08:46:29 · 125 阅读 · 0 评论 -
【iOS开发】GCD中央调度器
##GCD (grand center dispatch)任务:需要执行的操作队列:线性队列 并发队列 同步队列几种组合方式同步+并发执行特点:同步队列+同步异步+并发异步+同步队列:常用三种方式创建dispatch_get_main_queuedispatc_queue_createdispatch_global_queue三种队列:串行队列并发队列主队列任务:两种执行方式 dispatch_async(queue, ^{ //异步执行代码原创 2020-08-10 20:41:29 · 359 阅读 · 0 评论 -
【IOS开发】属性关键字
三个类别:读写权限原子性引用计数1.读写权限readonlyreadwrite(默认)2.原子性atomic (默认) 可以保证赋值和获取是线程安全的,不代表操作和访问nonatomic比如atomic修饰数组的话,对数组进行赋值获取是线程安全的。对数组添加对象或者移除对象是没有办法保证线程安全的。引用计数retain/strongassign/unsafe_unretainedweakcopy1. weak 和 assign区别assign修饰基本数据类型,如int原创 2020-08-06 22:58:10 · 261 阅读 · 0 评论 -
【iOS开发】OC语言特性之代理与通知
重点分类分类关联对象扩展代理通知KVOKVC属性关键字代理准确的说是一种软件设计模式(代理模式)iOS中以@protocol形式实现传递方式一对一1. 代理工作流程2. 可能遇到的问题一般声明以weak以规避循环引用通知使用观察者模式来实现的用于跨层传递消息的机制。传递方式为一对多如何实现通知机制?...原创 2020-08-05 22:51:01 · 208 阅读 · 0 评论 -
【iOS开发】OC语言特性之关联对象
重点分类分类关联对象扩展代理通知KVOKVC属性关键字关联对象我们不能在分类的声明或者说定义实现的时候,为分类添加实例变量,但是我们可以通过关联对象为分类添加实例变量。通过三个关键函数:/** * Sets an associated value for a given object using a given key and association policy. * * @param object The source object for the associat原创 2020-08-05 22:28:31 · 280 阅读 · 0 评论 -
【iOS开发】OC语言特性之分类与扩展
重点分类分类关联对象扩展代理通知KVOKVC属性关键字1.分类1.1 你用分类做了哪些事?声明私有方法分解体积庞大的类文件把Framework的私有方法公开化1.2 分类特点运行时决议(编好之后并没有添加到对应的宿主类中,而是在运行时将分类方法添加到宿主方法)可以为系统类添加分类 (UIView添加x,y坐标)1.3 分类中可以添加哪些内容实例方法类方法协议属性struct category_t { const char *name;原创 2020-08-05 22:06:01 · 322 阅读 · 0 评论 -
【iOS开发】UI视图离屏渲染
离屏渲染当前屏幕渲染:指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行。离屏渲染:指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。当我们指定了UI的某些属性,标记为它在位域合成之前不能用于当前屏幕显示的时候就会触发离屏渲染,而离屏渲染的概念起源于GPU层面,指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。何时会触发?圆角(当和maskToBounds一起使用时)图层蒙版阴影光栅化clipsToBounds为何要避免?GPU层面上触发多通道渲染管线原创 2020-08-04 23:21:46 · 211 阅读 · 0 评论 -
【iOS开发】观察者模式
定义了一种一对多的关系,可以让多个观察者同时监听某一个对象或对象属性的变化。被监听的对象在状态变化时,会通知所有的观察者,使他们能够及时的处理业务逻辑和代理delegate模式的对比。iOS提供了KVO机制实现方式关键步骤:1. 注册监听[self.webView addObserver:self forKeyPath:@"estimatedProgress" options:NS...原创 2020-03-03 18:10:05 · 189 阅读 · 0 评论 -
【iOS】分类 扩展 关联对象 核心解读
分类 扩展 关联对象思路做了哪些事情?特点局限性源码分析1. 概述:不知道源码的情况下为类添加方法2. 主要作用分解体积大的类文件声明私有方法把Framework的私有方法公开模拟多继承3. 底层实现struct category_t { const char *name; classref_t cls; struct method_li...原创 2020-01-03 10:26:36 · 264 阅读 · 0 评论 -
OC核心基础快速掌握之万丈高楼平地起
本博旨在最短的时间内的总结最核心的知识,如果有疑问,欢迎进行留言,我会在看到消息后第一时间内回复,如果有错误,欢迎指出,非常感谢。核心思想任何语言的学习都需要先掌握最基本的元素:基本数据类型、集合类型,程序结构,类/属性/方法一、基本数据类型1. 数据元素命名规则:由字母、数字、下划线、$符号组成 大小写敏感定义变量时候不能使用关键字基本数据类型(前面6行右边为输出方式):...原创 2018-11-06 22:33:04 · 466 阅读 · 0 评论 -
UI控件常用设置之直接粘贴使用swfit版
常用控件设置UILableUIButtonUITableViewController常用宏设置UILabel常见设置:设置换行设置对齐方式 lazy private var messageTitleLabel: UILabel = { let label = UILabel() label.textColor = UIColor.black lab...原创 2018-11-08 22:00:17 · 188 阅读 · 0 评论 -
IOS iPhoneX适配以及常用适配属性和自定义导航栏配置
背景:《iPhone X 官方人机交互指南中文版》 《iPhone X适配没那么复杂,但也不是看上去这么简单》 《取消了Home键的 iPhone X,交互方式都有哪些变化?》关键属性:ios 11之后原来automaticallyAdjustsScrollViewInsets属性无效,修改为 @available(iOS 11.0, *) public enum...原创 2019-01-24 23:29:01 · 2409 阅读 · 0 评论 -
小白都能看的懂的RSA密码算法原理
RSA加密算法RSA加密算法是一种非对称加密算法。应用场景:加密特点:相对安全、加密效率低、加密数据小使用RSA加密算法完整的流程是:产生对应的公钥和私钥使用算法对数据加密使用对应算法对加密后的数据解密1.公钥私钥的产生涉及到几个概念:欧拉函数、模逆元,我们逐个看一下欧拉函数概念:任意给定正整数n,求出在小于等于n的正整数之间有多少个与n构成互质关系。计算这个值的...原创 2019-01-26 21:53:16 · 1402 阅读 · 0 评论 -
每个人都要了解的Hash算法原理和特性
HASH算法概念:一般翻译做“散列”,就是把任意长度的输入通过散列函数变化成固定长度的输出,该输出就是散列值。散列的空间通常远远小于输入的空间,不同的输入会散列城相同的输出(散列冲突)。优秀hash特点:正向快速逆向困难输入敏感(输入一点改动,输出也会不一样)冲突避免应用:数据结构-对于数据空间的组织,散列开来,建立快速映射的关系,往往数据的插查询,插入,删除都比较迅速。接...原创 2019-01-28 23:20:02 · 3407 阅读 · 0 评论 -
ios开发新手入门-多视图控制器管理
设置根视图控制器OC- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //创建window 设置rootViewController ,显示出来 self.window = [[UIWindow alloc]...原创 2019-01-30 14:48:57 · 588 阅读 · 0 评论 -
【IOS】RunTime精进
Runtime精进一、什么是runtimeruntime是一套用C语言和汇编写的一套API,存在意义是支持OC动态性,将一些工作编译连接推迟到运行时,只有编译器是不够的,还需要一个运行时系统,这就是runtime机制。其中最主要的就是消息机制。 消息转发和消息传递。使用场景注意事项swizzling应该总在+load中执行swizzling应该总是在dispatch_once中执行...原创 2019-06-14 20:08:14 · 268 阅读 · 0 评论 -
IOS开发-QQ密码登录
欢迎使用Markdown编辑器写博客推出软键盘两种方式: 保持意见: 请教大佬//// ViewController.m// 01-点餐//// Created by qyg on 2018/7/10.// Copyright © 2018年 qyg. All rights reserved.//#import "ViewController.h"@i...原创 2018-07-11 19:26:39 · 602 阅读 · 0 评论