草庐IT

iOS Runtime之KVC

Runtime系列导读iOSRuntime之方法查找iOSRuntime之方法替换iOSRuntime之KVOiOSRuntime之KVCiOSRuntime之反射调用简介KVC是KeyValueCoding的缩写,意思是键值编码。在iOS中,提供了一种方法通过使用属性的名称(也就是Key)来间接访问对象属性的方法,这个方法可以不通过getter/setter方法来访问对象的属性。用KVC可以间接访问对象属性的机制。通常我们使用valueForKey来替代getter方法,setValue:forKey来代替setter方法。用法常见API-(void)setValue:(id)valuefo

iOS底层原理笔记 - Runtime结构

Runtime结构OC是一门动态性比较强的语言,跟C、C++语言有着很大不同OC的动态性是由RuntimeAPI来支撑的RuntimeAPI提供的接口基本都是C语言的,源码由C/C++/汇编语言编写要想学习runtime,首先要了解它底层的一些常用数据结构,比如isa指针在arm64之前,isa就是一个普通的指针,存储着Class、Meta-Class对象的内存地址在arm64架构开始,对isa进行了优化,变成了一个共用体(union)结构,还使用位域来存储更多信息unionisa_t{Classcls;uintptr_tbits;struct{uintptr_tnonpointer:1;\u

iOS底层原理笔记 - Runtime结构

Runtime结构OC是一门动态性比较强的语言,跟C、C++语言有着很大不同OC的动态性是由RuntimeAPI来支撑的RuntimeAPI提供的接口基本都是C语言的,源码由C/C++/汇编语言编写要想学习runtime,首先要了解它底层的一些常用数据结构,比如isa指针在arm64之前,isa就是一个普通的指针,存储着Class、Meta-Class对象的内存地址在arm64架构开始,对isa进行了优化,变成了一个共用体(union)结构,还使用位域来存储更多信息unionisa_t{Classcls;uintptr_tbits;struct{uintptr_tnonpointer:1;\u

swift注意事项

一、编程范式Swift可以面向协议编程(POP)、函数式编程、面向对象编程。Object-C以面向对象编程(OOP)为主,当然你可以引入类似ReactiveCocoa的类库来进行函数式编程。从OOP思想到POP转变。在Swift开发中,OOP和POP是相辅相成的,任何一方并不能取代另一方。POP能弥补OOP一些设计上的不足关于面向协议编程:1.优先考虑创建协议,而不是父类(基类)2.优先考虑值类型(struct、enum)【结构体】,而不是引用类型(class)【类】3.巧用协议的扩展功能entension4.不要为了面向协议而使用协议二、oc与swift混编有些第三方框架还是oc版本,利用桥

swift注意事项

一、编程范式Swift可以面向协议编程(POP)、函数式编程、面向对象编程。Object-C以面向对象编程(OOP)为主,当然你可以引入类似ReactiveCocoa的类库来进行函数式编程。从OOP思想到POP转变。在Swift开发中,OOP和POP是相辅相成的,任何一方并不能取代另一方。POP能弥补OOP一些设计上的不足关于面向协议编程:1.优先考虑创建协议,而不是父类(基类)2.优先考虑值类型(struct、enum)【结构体】,而不是引用类型(class)【类】3.巧用协议的扩展功能entension4.不要为了面向协议而使用协议二、oc与swift混编有些第三方框架还是oc版本,利用桥

iOS-runtime-总结

1、runtime简介C是面向过程的。OC是面向对象的,是C的超集,在C的基础上多了封装、继承和多态等特性。简单来说,OC比C多了面向对象+动态性。OC语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等。OC的动态性是由runtime来支撑和实现的。这种特性意味着OC不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。对于OC来说,这个运行时系统就像一个操作系统一样:它让所有的工作可以正常的运行。这个运行时系统即ObjcRuntime。ObjcRu

iOS-runtime-总结

1、runtime简介C是面向过程的。OC是面向对象的,是C的超集,在C的基础上多了封装、继承和多态等特性。简单来说,OC比C多了面向对象+动态性。OC语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等。OC的动态性是由runtime来支撑和实现的。这种特性意味着OC不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。对于OC来说,这个运行时系统就像一个操作系统一样:它让所有的工作可以正常的运行。这个运行时系统即ObjcRuntime。ObjcRu

关于 web 服务:java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl 不能转换为 com.sun.xml.bind.api.JAXBRIContext

java.lang.ClassCastException:com.sun.xml.bind.v2.runtime.JAXBContextImplcannotbecasttocom.sun.xml.bind.api.JAXBRIContext我创建了一个jaxws网络服务。我完全按照url服务完美无误。但是服务器在请求命中时出错。1234567SEVERE:caughtthrowablejava.lang.ClassCastException:com.sun.xml.bind.v2.runtime.JAXBContextImplcannotbecasttocom.sun.xml.bind.api

关于 web 服务:java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl 不能转换为 com.sun.xml.bind.api.JAXBRIContext

java.lang.ClassCastException:com.sun.xml.bind.v2.runtime.JAXBContextImplcannotbecasttocom.sun.xml.bind.api.JAXBRIContext我创建了一个jaxws网络服务。我完全按照url服务完美无误。但是服务器在请求命中时出错。1234567SEVERE:caughtthrowablejava.lang.ClassCastException:com.sun.xml.bind.v2.runtime.JAXBContextImplcannotbecasttocom.sun.xml.bind.api

iOS开发面试只需知道这些,技术基本通关!(Runtime篇)

#一、objc对象的isa的指针指向什么?有什么作用?指向他的类对象,从而可以找到对象上的方法详解:下图很好的描述了对象,类,元类之间的关系:图中实线是super_class指针,虚线是isa指针。1. Root class (class)其实就是NSObject,NSObject 是没有超类的,所以Root class(class)的superclass指向nil。2. 每个Class 都有一个isa 指针指向唯一的Meta class3. Root class(meta)的superclass 指向Root class(class),也就是NSObject,形成一个回路。4. 每个Meta