![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS知识了解
Leonardo_Fibonacci
make it happen make it better
展开
-
iOS UIView快速添加事件
给UIView 做一个延展//// UIView+SKTap.h// MeiGouYouPin//// Created by coder on 2019/10/29.// Copyright © 2019 AlexanderYeah. All rights reserved.//#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_...原创 2019-10-29 17:00:55 · 332 阅读 · 0 评论 -
Block 底层值__Block修饰符
__Block 修饰符Block 想要改变外部的变量,必须要用__Block 来修饰自动变量。根据内存地址可以看出来,__block 所修饰的变量,将外部的变量在栈中的内存地址放到了堆中。 // auto 自动变量的内存分配在栈区域 stack __block int meters = 1000; // 在block 引用之前 0x7ffeefb...原创 2019-07-17 12:04:21 · 172 阅读 · 0 评论 -
Block 底层1
Block本质来讲是OC 对象,其内部有一个isa指针。1 Block 的声明一言以蔽之: returnType ( ^blockName)(parameterTypes) = ^returnType (parameters) {};returnType 返回的类型 可以为Void,为Void的时候可以省略^blockName Block的名字parameterTypes...原创 2019-07-16 18:44:05 · 140 阅读 · 0 评论 -
iOS KVO 的实现原理
KVO 的实现原理一 原理1.KVO是基于runtime机制实现的2.当某个类的属性对象第一次被观察时,系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的setter 方法。派生类在被重写的setter方法内实现真正的通知机制3.如果原类为Dog,那么生成的派生类名为NSKVONotifying_Dog4.每个类对象中都有一个isa指针指向当前类,当一个...原创 2019-07-16 11:07:00 · 332 阅读 · 0 评论 -
OC的对象的分类
OC的对象分类一 oc的对象分类主要分为3种1 instance 对象:实例对象就是通过alloc 出来的对象,一个类每一次的alloc都会产生一个新的实例对象 StudentA *a = [[StudentA alloc]init]; StudentA *b = [[StudentA alloc]init]; // 打印结果如下 地址是明显不同的 ...原创 2019-07-11 10:42:25 · 200 阅读 · 0 评论 -
iOS 中 load 和 initialize的实现顺序
1 load 函数调用时机,当类引用进项目的时候执行load函数,在main函数开始之前,与这个类是否被用到是无关的,每个类的load函数都会自动调用一次。1 父类和子类都实现load函数的时候,父类的load方法优先于子类2 类中的load方法执行顺序优先于类别(Category)3 当有多个类别(Category)实现load方法时候。会按照顺序执行4 子类load...原创 2019-07-01 11:07:09 · 547 阅读 · 0 评论 -
iOS NSObject对象内存大小
NSObject内存大小类的本质是结构体 无须赘述struct NSObject {Class isa; };一个类对象的实例大小是8个字节之所以打印出的16个字节,是因为一个NSObject 最小开辟16个字节 NSObject *obj = [[NSObject alloc]init]; // class_getInstanceSize 这是runtime 获...原创 2019-07-10 18:11:45 · 1059 阅读 · 0 评论 -
OC的分类
OC的分类1 OC 分类作用生命私有的方法分解体积庞大的类文件把Framework的私有方法公开2 分类的特点运行时决议可以为系统添加分类3 分类可以添加哪些内容实例方法类方法协议属性分类会被编译成一个结构体struct category_t { const char *name; ...原创 2019-07-13 11:18:07 · 554 阅读 · 0 评论 -
LLDB 调试相关
LLDB 初始LLDB 是一个有着 REPL 的特性和 C++ ,Python 插件的开源调试器。LLDB 绑定在 Xcode内部,存在于主窗口底部的控制台中。调试器允许你在程序运行的特定时暂停它,你可以查看变量的值,执行自定的指令,并且按照你所认为合适的步骤来操作程序的进展。1 expression 简写为e执行一个表达式动态修改当前线程堆栈变量的值- (void)viewDi...原创 2019-06-28 09:56:08 · 263 阅读 · 0 评论 -
iOS HitTest 机制
当用户触摸(Touch)屏幕进行交互时,系统首先要找到响应者(Responder)。系统检测到手指触摸(Touch)操作的时候,将Touch以UIEvent 的方式加入到UIApplication 事件队列中去。UIApplication 从事件队列中取出最新的触摸事件进行分发传递到UIWindow 进行处理.UIWindow 会通过hit Test:WithEvent 方法寻找触碰点所在的视...原创 2019-06-28 09:43:53 · 1961 阅读 · 0 评论 -
iOS事件响应链
1 如下NSObject 显然是基类,都是继承与UIResponder.可以看出UIApplication,UIView,UIViewController都是继承自UIResponder类,可以响应和处理事件很多时候 我们都是通过UIResonder 来查找控件的父视图控件。...原创 2019-06-27 22:49:56 · 184 阅读 · 0 评论 -
OC协议实现多继承
协议实现多继承协议实现多继承的话,只是简答的提供了接口,并灭有提供实现的方式。A#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN@protocol StuAProtocal <NSObject>// 学生A 会游泳- (void)swimming;@end@interface S...原创 2019-07-03 11:31:39 · 642 阅读 · 0 评论 -
OC 消息转发实现多继承
消息转发实现多继承在OC 中,一个类只支持单继承,但是可以通过别的手段实现多继承。利用消息转发实现多继承。在OC 中,对象调用方法实际是在发消息,对象接收到一条消息的时候,消息函数随着对象的isa 指针到自己的方法列表中去寻找对应的方法,如果本类找不到,去父类中寻找,父类中找不到,继续沿着继承关系向上寻找,一直寻找到NSObject类别。如果到跟类没有找到,进行消息转发。一下是实现步骤创...原创 2019-07-03 11:09:44 · 367 阅读 · 0 评论 -
OC 的反射机制以及使用场景
OC 的反射机制一 定义概念普遍的概念就是类似于java的反射机制,动态机制使得OC语言更加灵活。反射机制就是可以根据指定的类名获取类的相关信息。二 作用1 根据类名获得class// 选择器 和字符串之间的相互转化FOUNDATION_EXPORT NSString *NSStringFromSelector(SEL aSelector);FOUNDATION_EXPORT S...原创 2019-07-03 10:31:38 · 1186 阅读 · 0 评论 -
iOS 三种类型的Block
Block 的copy 操作Block 其实来讲有三种类型全局块 NSConcreteGlobalBlock栈块 NSConcreteStackBlock堆块 NSConcreteMallocBlock全局块存储在全局内存中,相当于单例栈块存于栈内存中,超出其作用域则马上进行销毁堆块存在于堆内存中,是带一个引用计数的对象,需要自己进行内存管理1> ...原创 2019-06-27 09:59:09 · 2225 阅读 · 1 评论 -
iOS weak 自动置为nil的实现
1 weak 自动置为nil的实现runtime 维护了一个Weak表,weak_table_t用于存储指向某一个对象的所有Weak指针。Weak表其实是一个哈希表,key是所指对象的地址,value是weak指针的地址的数组。在对象回收的时候,就会在weak表中进行搜索,找到所有以这个对象地址为键值的weak对象,从而置位nil。2 weak实现的原理2.1 初始化步骤runtim...原创 2019-06-27 09:55:19 · 1185 阅读 · 0 评论 -
xCode 开发快捷键
Ctrl + CMD + 右箭头返回上一个编辑的界面Ctrl + CMD + 左箭头返回后一个编辑的界面CMD + Option + 左箭头区域代码折叠CMD + Option + 右箭头区域代码展开Shift + CMD + Option + 左箭头折叠界面内所有的代码Shift + CMD + Option + 右箭头展开界面内所有的代码...原创 2019-03-19 14:41:33 · 152 阅读 · 0 评论 -
OC对象内存布局
OC对象的内存布局1 每一个实例对象(Instance)内部都有一个isa指针,指向它的类对象,类对象存放着本对象的实例方法列表和成员变量列表。2 类对象(Class)内部也有一个isa指针指向元类对象(MetaClass),元类对象存放的事类方法列表3 类对象和元类对象内部均有一个superclass指针,指向它的父类对象。...原创 2018-12-22 22:40:07 · 945 阅读 · 0 评论 -
iOS arm 64 的了解
ARM简介:ARM处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine。百度介绍iOS设备中的处理器都是基于ARM架构的。arm设备真机i386(iphone5,iphone5s以下的模拟器)×x86_64(iphone6以上的模拟器)×armv7iphone4(真机32位)√...原创 2018-12-11 18:12:15 · 690 阅读 · 0 评论