SEL 类成员方法的指针 可以理解 @selector()就是取类方法的编号,他的行为基本可以等同C语言的中函数指针,只不过C语言中,可以把函数名直接赋给一个函数指针,而Object-C的类不能直接应用函数指针,这样只能做一个@selector语法来取. 它的结果是一个SEL类型.这个类型本质是类方法的编号(函数地址) C/C++函数指针 int test(int val) {return val+1; } int (* c_func)(int val); //定义一个函数指针变量c_func…
SEL消息机制工作原理是什么 引用下面文章: 我们在之前有提到,一个类就像一个 C 结构.NSObject 声明了一个成员变量: isa. 由于 NSObject 是所有类的根类,所以所有的对象都会有一个 isa 的成员变量[公共继承].而该 isa 变量指向该对象的类(图3.15)[类在Objective-C中也是一个实体, 由于存在Objective-C 运行环境所有的类将有自己的存储空间.Objective-C 运行环境将为每个类分配空间. 这里 所说的 isa,正是指向这样一个类的空间.…
SEL 类成员方法的指针 可以理解 @selector()就是取类方法的编号,他的行为基本可以等同C语言的中函数指针,只不过C语言中,可以把函数名直接赋给一个函数指针,而Object-C的类不能直接应用函数指针,这样只能做一个@selector语法来取. 它的结果是一个SEL类型.这个类型本质是类方法的编号(函数地址) C/C++函数指针 int test(int val) { return val+1; } int (* c_func)(int val); //定义一个函数指针变量c_func…
摘要:iOS开发中,开发者不仅要做好iOS的内存管理,而且如果你的iOS涉及多线程,那你也必须了解iOS编程中对多线程的限制,iOS主线程的堆栈大小为1M,其它线程均为512KB,且这个限制开发者是无法用任何方式改变的.本文就详细阐述iOS开发中多线程的原理及实践. 一.线程概述 有些程序是一条直线,起点到终点:有些程序是一个圆,不断循环,直到将它切断.直线的如简单的Hello World,运行打印完,它的生命周期便结束了,像昙花一现那样:圆如操作系统,一直运行直到你关机. 一个运行着的程序就是…
本文Demo传送门: MessageForwardingDemo 摘要:编程,只了解原理不行,必须实战才能知道应用场景.本系列尝试阐述runtime相关理论的同时介绍一些实战场景,而本文则是本系列的消息转发篇.本文中,第一节将介绍方法消息发送相关的概念,第二节将总结一下2. 动态特性:方法解析和消息转发(Method Resolution,Fast Rorwarding,Normal Forwarding),第三节将介绍方法交换几种的实战场景:特定奔溃预防处理(调用未实现方法),苹果系统迭代造成…
iOS Category实现原理 (补充) load 和 initialize load load方法会在程序启动就会调用,当装载类信息的时候就会调用. 调用顺序看一下源代码.在 objc-loadmethod.m 文件中实现 void call_load_methods(void) { static bool loading = NO; bool more_categories; loadMethodLock.assertLocked(); // Re-entrant calls do not…
目录: Reactor(反应堆)和Proactor(前摄器) <I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor> <[转]第8章 前摄器(Proactor):用于为异步事件多路分离和分派处理器的对象行为模式> <Java NIO系列教程(八)JDK AIO编程>-- java AIO的proactor模式 <Java NIO系列教程(七) selector原理 Epoll版的Selector>--java NIO的Reac…
本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 //转载请注明出处--本文永久链接:http://www.cnblogs.com/ChenYilong/p/3496033.html    本文对应pdf文档下载链接,猛戳- :https://www.evernote.com/shard/s227/sh/ca0d8662-92fc-4e7e-bf87-e66c7abb5d47/1efbf2274b60a4b25aff8422d05e…
iOS应用启动原理图解(红色箭头表示strong强引用,绿色箭头代表weak若引用) 只要将UI控件拖到Storyboard里控制器的大view上,Xcode会自动将这些控件以强引用的形式加入到self.view.subviews数组中. 因为这些控件已经有了1个强引用,只要self.view不销毁,这些UI控件就不会销毁.所以再将这些UI控件拖线到UIViewController中作为属性时,直接使用weak引用就行,没必要再使用strong强引用了.…
iOS Category实现原理 实现原理 我们不主动引入 Category 的头文件,Category 中的方法都会被添加进主类中.我们可以通过 - performSelector: 等方式 对 Category 中的相应方法进行调用 a) 将 Category 和它的主类(或元类)注册到哈希表中: - b)如果主类(或元类)已实现,那么重建它的方法列表. 在这里分了两种情况进行处理:Category 中的实例方法和属性被整合到主类中:而类方法则被整合到元类中(关于对象.类和元类的更多细节,可…