
runtime
gaoyuqiang30
这个作者很懒,什么都没留下…
展开
-
<拦截>所有调用某方法的地方--黑魔法
MyObject+Tracking.h如下//// MyObjct+Tracking.h// Test10//// Created by lagou on 15/12/2.// Copyright © 2015年 lagou. All rights reserved.//#import #import #import "MyObject.h"@interface原创 2015-12-02 19:58:06 · 589 阅读 · 0 评论 -
iOS开发中的对象系统基础
[0] Outline -- [1] id和Class -- [2] 动态地操作类 -- [3] 实例化[1] id和Class在Objective-C中有一个特别的数据类型作为对象标识符:id,可以指向任何类型的对象。通过 “可以指向任何类型的对象” 这一描述,猜想id实际上是指向Objective-C对象系统中的基类(继承体系中的祖先结构)的指针,在运行时转载 2016-09-08 19:20:40 · 293 阅读 · 0 评论 -
class_addIvar里的alignment属性
这个alignment是对齐数,目前有两种做法, BOOL isC = class_addIvar(class, "name", sizeof(NSString *), log2(_Alignof(NSString *)), @encode(NSString *));一种是 BOOL isC = class_addIvar(class, "name", sizeof(N原创 2016-09-08 19:10:53 · 1332 阅读 · 0 评论 -
ios动态创建类Class
动态创建类Class,动态添加Class成员变量与成员函数,动态变量赋值与取值,动态函数调用等方法a.使用objc_allocateClassPair创建一个类Class const char * className = "Calculator"; Class kclass = objc_getClass(className); if (!kclass)转载 2016-09-08 15:51:30 · 465 阅读 · 0 评论 -
iOS学习之Objective-C Class Ivar Layout的使用
虽然现在swift语言的使用越来越广泛了,但作为iOS开发20多年御用开发语言的Objective-C仍有着相当大的用户群,现在要从事iOS开发,不会Objective-C根本就不能称之为iOS开发者。今天小编就为大家介绍一下Objective-C Class Ivar Layout的相关应用。当定义一个类的实例变量的时候,可以指定其修饰符:@interface Sark: NSObj转载 2016-09-08 15:43:05 · 1084 阅读 · 0 评论 -
iOS中的dyld缓存是什么?
在iOS开发中,为了提升系统的安全性,很多系统库文件都被打包到一个缓存的文件当中即dyld缓存,那大家对dyld缓存了解多少呢?今天小编将和大家分享的就是一位iOS大神对dyld缓存的使用分析,一起来看看吧。首先,我们来了解下dyld缓存。在iOS系统中,几乎所有的程序都会用到动态库,而动态库在加载的时候都需要用dyld(位于/usr/lib/dyld)程序进行链接。很多系统库几乎都是每个程序转载 2016-09-14 11:20:10 · 12544 阅读 · 0 评论 -
iOS category内部实现原理
转载自:http://tech.meituan.com/DiveIntoCategory.html摘要无论一个类设计的多么完美,在未来的需求演进中,都有可能会碰到一些无法预测的情况。那怎么扩展已有的类呢?一般而言,继承和组合是不错的选择。但是在Objective-C 2.0中,又提供了category这个语言特性,可以动态地为已有类添加新行为。如今category已经遍布于Obje转载 2016-09-13 15:59:33 · 460 阅读 · 0 评论 -
iOS runtime 之消息转发
Objective-C 是一门动态语言,它的动态性体现在它将很多编译和链接时做的事推延到运行时处理,而这一机制主要依赖系统提供的 runtime 库。利用 runtime 库,我们能在运行时做很多事,例如 objc_setAssociatedObject 动态绑定属性、method swizzling、class_copyIvarList 动态获取属性实现 ORM(Object Relationa转载 2016-09-11 12:07:42 · 414 阅读 · 0 评论 -
objc runtime
前言: Objective C的runtime技术功能非常强大,能够在运行时获取并修改类的各种信息,包括获取方法列表、属性列表、变量列表,修改方法、属性,增加方法,属性等等,本文对相关的几个要点做了一个小结。目录:(1)使用class_replaceMethod/class_addMethod函数在运行时对函数进行动态替换或增加新函数(2)重载f原创 2016-09-11 11:55:39 · 429 阅读 · 0 评论 -
runtime函数详解
Class class = objc_allocateClassPair([NSObject class], "Cat", 0); class_addIvar(class, "name", sizeof(id), log2(sizeof(id)), @encode(id)); class_addMethod(class, @selector(test), (IMP)&test, "原创 2016-09-09 11:28:30 · 669 阅读 · 0 评论 -
objc_msgSend()报错Too many arguments to function call ,expected 0,have2
Build Setting--> Apple LLVM 7.1 - Preprocessing--> Enable Strict Checking of objc_msgSend Calls 改为 NO原创 2016-09-09 12:22:02 · 317 阅读 · 0 评论 -
objc/runtime中SEL、IMP和method动态定义
定义先来看一下method相关的定义typedef struct objc_method *Method;typedef struct objc_selector *SEL;typedef void (*IMP)(void /* id, SEL, ... */ ); //方法描述struct objc_method_description { SEL name;转载 2016-09-09 00:26:52 · 505 阅读 · 0 评论 -
FDFullscreenPopGesture全局右滑
之前面试的时候有两家公司问过我黑魔法,我听都没听过,然后面试官透露是runtime,当时蒙了,我out了?????我居然没听过???其中一位面试官还问到全局右滑怎么能实现,还说用黑魔法能实现。我自那之后就对黑魔法崇拜之极,非常想一睹之风采。今天研究runtime,突然看到一个交换实现方法,然后拦截方法的功能,原来这就是黑魔法!!!!!!然后我趁热打铁,搜了一下全局右滑,最终让我抓到了它----原创 2015-12-02 21:52:21 · 3684 阅读 · 2 评论 -
对象和字典相互转化
- (MyObject *)objectFromDic:(NSDictionary *)dic { MyObject *o = [[MyObject alloc] init]; if (dic == nil || [dic count] == 0) { return nil; } id viewClass = objc_getCl原创 2015-12-03 19:23:30 · 585 阅读 · 0 评论 -
runtime (一)
id viewClass = objc_getClass("MyObject"); unsigned int outCount; objc_property_t *properties = class_copyPropertyList(viewClass, &outCount); for (int i = 0; i < outCount; i++) { ob原创 2015-12-03 16:03:14 · 319 阅读 · 0 评论 -
TypeEncoding
- (void)printStr:(NSString *)s fff:(BOOL)fff2{ NSLog(@"sss");}结果:"v28@0:8@16B24"所以"v@:"前缀不变,后面每加一个参数就要加一个符号,B是Bool,i是int ,NSObject是@原创 2015-12-03 17:21:49 · 384 阅读 · 0 评论 -
runtime详细介绍
http://yulingtianxia.com/blog/2014/11/05/objective-c-runtime/本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的动态特性,使这门古老的语言焕发生机。主要内容如下:引言简介与Runtime交互Runtime术语消息动态方法解析消息转发健壮的实例变量(Non Frag转载 2015-12-03 16:57:18 · 405 阅读 · 0 评论 -
block strong
id objc_retainBlock(id x) { return (id)_Block_copy(x);}原创 2015-12-02 16:15:56 · 328 阅读 · 0 评论 -
将model转化为字典
将model转化为字典 刚入行时就见过项目里有mode转化为字典的代码,后来用过MJExtension的第三方库,非常好用,其实原理就是利用runtime遍历所有属性值,然后进行转化。但是自己从来没有动手写过~~~今天亲自写一写1.先用runtime遍历所有属性值代码如下:- (NSDictionary *)dicFromObject:(NSObject *)object { NSMuta原创 2017-07-26 17:45:57 · 9327 阅读 · 1 评论