
iOS基础
文章平均质量分 57
不爱吃酸的大力水手
遇强则强
展开
-
iOS基础类及@property属性
一、instancetype与id instancetype只用于返回当前类对象,若接收的对象不是当前类时,编译器会报警告(Incompatible pointer types initializing 'NSString *' with an expression of type 'JZPerson *')例如:NSString* person = [JZPerson person]。而且类...原创 2018-09-09 22:59:52 · 618 阅读 · 0 评论 -
与哈希表有关
本质哈希表本质其实是数组,它是通过关键码值而直接进行访问的数据结构。将key映射到数组中所对应位置,已便于对数组中的值进行快速查找,这个映射函数就是散列函数,这个存放数组即为散列表; 哈希表存放时其实是通过哈希函数将key转为整型数,再通过数组的长度进行取余,得到key在数组中所对应的位置address,将value值存放在address对应的位置处。 哈希表读取时是通过哈希函数将key转...原创 2019-03-14 16:50:24 · 153 阅读 · 0 评论 -
__weak与__block的使用
一、缘由有时候会因为循环引用导致对象无法释放时,会导致内存泄漏问题,使程序内存无法及时释放而内存增加。有时候我们想在block块中修改外部变量或者对象的值或属性,这些问题和需求使我们不得不去想办法更好地解决,这个时候我们会想到的是使用__weak和__block进行修饰。二、block定义在进行__weak和__block使用之前,我们先来对block块的基本定义回味一下,让接下来阅读...原创 2018-12-09 15:14:41 · 1051 阅读 · 0 评论 -
Tagged Pointer作用
Tagged Pointer是苹果在 64 位架构下为了提升系统数据处理及执行效率,提出来的新概念。提出的原因是当在32位架构下,假设一个整型在32位系统下占4位,到了64位系统下将会占8位,既是内存翻了一倍;所以如果是一个占8位内存的指针,到了64位系统下占用内存也将是翻一番。所以苹果从内存和效率方面进行了考虑,使用了Tagged Pointer进行了优化,使得NSNumber、NSDate这类...原创 2018-12-13 23:36:01 · 194 阅读 · 0 评论 -
iOS转场类
当开发中切换控制器时的默认执行的动画效果无法满足我们日常需求,我们则可以通过实现自定义想要的动画效果。一、转场动画相关类1. 动画控制器 (Animation Controllers) 遵从 UIViewControllerAnimatedTransitioning 协议,并且负责实际执行动画。可实现以下代码执行动画。- (NSTimeInterval)transitionDura...原创 2018-11-26 22:47:04 · 156 阅读 · 0 评论 -
UINavigationBar的结构分析
自从iOS11以后,苹果X的出现,导致UINavigationBar也出现了比较大的变化,刘海的出现让开发人员需重新进行适配,爽歪歪。下面先从UINavigationBar的外观进行讲解。以上是X的外观,下面我们对UINavigationBar的结构做下简单的分析:一、translucent为半透明的情况下:结构分析:_UIBarBackground相当于是UINavigati...原创 2018-11-21 15:49:34 · 821 阅读 · 0 评论 -
iOS 加载xib
概念:xib 是 Interface Builder 的图形界面设计文档,本质是XML文本文件,可以很方便的编辑。同时xib可以编译为nib。加载方式:1、加载xxxView.xib的文件:/** 第一种加载View类型的xib方式 **/UINib* nib = [UINib nibWithNibName:@"OneView" bundle:nil];NSArray* ...原创 2018-11-04 17:55:32 · 1085 阅读 · 0 评论 -
iOS runtime消息转发机制
1、概念:当消息的接受者找不到对应的方法selector,就会启动消息转发机制。2、消息转发机制分为三步:1、动态方法解析2、备用接受者3、完整消息转发3、详解:第一步:通过调用+ (BOOL)resolveInstanceMethod:(SEL)sel或者+ (BOOL)resolveClassMethod:(SEL)sel看是否对消息转发进行处理,若这一步对消息进行...原创 2018-10-10 17:08:30 · 328 阅读 · 0 评论 -
KVC与KVO
一、KVC1、概念:KVC是键值编码,即NSKeyValueCoding。我们可以通过以字符串为Key对对象属性进行操作。/** 通过传入字符串key获取或者设置类属性 **/- (nullable id)valueForKey:(NSString *)key;- (void)setValue:(nullable id)value forKey:(NSString *)key;...原创 2018-09-28 16:13:58 · 480 阅读 · 0 评论 -
iOS深复制与浅复制
一、概念:浅复制,也有人称做浅拷贝。就是只改变新对象的指针指向,并未生成新的内存地址,只是将新对象的指针指向要复制对象的内存地址。集合类与非集合类执行copy操作都是浅复制。深复制,同样也有人称做深拷贝。即改变新对象指针指向,还为对象生成新的内存地址。深复制又分为单层深复制与完全深复制,单层深复制虽然生成了新的内存地址,但是新的对象中的元素地址还是旧对象元素的地址;完全深复制就不一样了,不...原创 2018-09-18 22:27:05 · 223 阅读 · 0 评论 -
NSSet和NSMutableSet基本用法
一、概念名称为集合,存放着不可重复对象的集合,集合中对象是无序的。二、NSSet基本用法// 初始化集合的几种方式NSSet* setArray = [NSSet setWithArray:@[@"mm", @"jj", @"zz"]];NSSet* setObject = [NSSet setWithObject:@"hello"];NSSet* setObjects = [...原创 2018-09-15 21:18:25 · 339 阅读 · 0 评论 -
Runloop与UITableView简单结合
Runloop性质概述当程序执行时,默认线程执行完任务就退出了,如果我们想线程持续地处理事件,则需要为线程添加循环机制Runloop,Runloop是事件分发和实现的机制; Runloop是一个对象,这个对象处理线程持续执行程序运行中出现的各种事件(比如说触摸事件、UI刷新事件、定时器事件、Selector事件),从而使程序持续运行。在没有需要处理事件时休息,在有事件到来是唤醒处理,节省C...原创 2019-06-16 14:43:40 · 372 阅读 · 0 评论