首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Objective-C Runtime编程指南(1)

    苹果官方文档Objective-C Runtime Programming Guide 一、简介 Objective-C语言从编译时和链接时到运行时,推迟了尽可能多的决策。...运行时系统作为Objective-C语言的一种操作系统来使得Objective-C工作的。 本文档查看NSObject类以及Objective-C程序如何与运行时系统交互。...二、使用Runtime Objective-C程序与运行时系统在三个不同的层次上进行交互:通过Objective-C源代码; 通过在Foundation框架的NSObject类中定义的方法; 通过直接调用运行时功能...您只需编写和编译Objective-C源代码即可使用它。 编译包含Objective-C类和方法的代码时,编译器将创建实现该语言动态特性的数据结构和函数调用。...这些函数中的许多函数允许您使用plain C来复制编译Objective-C代码时编译器的功能。 其他形成了通过NSObject类的方法导出功能的基础。

    78720

    WWDC笔记 - Advancements in the Objective-C Runtime

    今年,Apple 给 Objective-C Runtime 带来了新的优化,接下来,让我们深入理解这些变化。...Dirty Memory:运行时会进行更改的内存块,类一旦被加载,就会变成Dirty Memory,例如,我们可以在 Runtime 给类动态的添加方法。...[image] 在类加载到 Runtime 中后会被分配用于读取/写入数据的结构体class_rw_t。...,之所以要这么设计是因为 Objective-C 是动态语言,你可以在运行时更改它们方法,属性等,并且分类可以在不改变类设计的前提下,将新方法添加到类中。...相对方法地址 现在,我们来看看 Runtime 的第二处的变化,方法地址的优化。 每个类都包含一个方法列表,以便 Runtime 可以查找和消息发送。

    1.4K1815

    Objective-C Runtime编程指南(2)

    苹果官方文档Objective-C Runtime Programming Guide 六、类型编码 为了帮助运行时系统,编译器将字符串中每个方法的返回值和参数类型进行编码,并将字符串与方法选择器相关联...这个类型可以是一个基本的类型,比如int,指针,带标签的结构体或联合体,或者是一个类名,实际上,它可以用作C sizeof()运算符的参数。...重要: Objective-C 不支持 long double 类型. @encode(long double) 返回 d, 与 double一样。...您可以使用支持在类或协议上按名称查找属性,以@encode字符串的形式获取属性的类型以及将属性的属性列表复制为C字符串数组的函数来访问此元数据。 已声明的属性列表可用于每个类和协议。...C The property is a copy of the value last assigned (copy). & The property is a reference to the value

    29610

    Objective-Cruntime机制的应用

    Objective-Cruntime机制的应用 一、初识runtime         Objective-C是一种动态语言,所谓动态语言,是在程序执行时动态的确定变量类型,执行变量类型对应的方法的...因此,在Object-C中常用字符串映射类的技巧来动态创建类对象。因为OC的动态语言特性,我们可以通过一些手段,在程序运行时动态的更改对象的变量甚至方法,这就是我们所说的runtime机制。...对,是时候展现真正的技术了:runtime! 三、通过runtime获取对象的变量列表         要操作对象的变量,我们首先应该要捕获这些变量,让他们无处遁形。..." #import "MyObject.h" //包含runtime头文件 #import  @interface ViewController () @end @implementation...operate:%@",obj);      } Tip:在修改int型变量的时候,你或许会遇到一个问题,ARC下,编译器不允许你将int类型的值赋值给id,在buildset中将Objective-C

    40150

    Linux电源管理(11)_Runtime PM之功能描述

    Runtime PM的软件框架 听多了RPM的传说,有种莫名的恐惧,觉的会很复杂。但看代码,也就是“drivers/base/power/runtime.c”中1400行而已。...很不幸,到目前为止,linux kernel的runtime PM还是很复杂。这里的复杂,不是从实现的角度,而是从对外的角度。...在“include\linux\pm_runtime.h”中,RPM提供了将近50个接口。软件模块化的设计理念中,最重要的一个原则就是提供简洁的接口。很显然,RPM没有做到!...4. runtime PM的API汇整 RPM提供的API位于“include/linux/pm_runtime.h”中,在这里先浏览一下,目的有二:一是对前面描述的RPM运行机制有一个感性的认识;二是为后面分析...core通过sysfs(drivers/base/power/sysfs.c),为每个设备提供一个“/sys/devices/...

    2.4K20

    神经病院 Objective-C Runtime 出院第三天——如何正确使用 Runtime

    提到Objective-C 中的 Runtime,大多数人第一个想到的可能就是黑魔法Method Swizzling。...比如说父类A的B方法和子类C的D方法进行交换,交换一次后,父类A持有D方法的IMP,子类C持有B方法的IMP,但是再次交换一次,就又还原了。...Associated Objects是Objective-C 2.0中Runtime的特性之一。...九.Runtime缺点 ? 看了上面八大点之后,是不是感觉Runtime很神奇,可以迅速解决很多问题,然而,Runtime就像一把瑞士小刀,如果使用得当,它会有效地解决问题。...还有一些关于协议相关的API以及其他一些不常用,但是也可能用到的,就需要查看Objective-C Runtime官方API文档,这个官方文档里面详细说明,平时不懂的多看看文档。

    1.4K20

    DAY6:阅读 CUDA C编程接口之CUDA C runtime

    我们正带领大家开始阅读英文的《CUDA C Programming Guide》,今天是第六天,我们用几天时间来学习CUDA 的编程接口,其中最重要的部分就是CUDA C runtime.希望在接下来的...Page-Locked Host Memory【锁页内存】 The runtime provides functions to allow the use of page-locked (also known...runtime的分配函数,有些是分配显存的。...有些是分配内存的,和普通的C语言的分配函数(例如malloc)不同的是,它能够直接分配锁页内存,或者通过非分配的锁定/注册函数,可以将普通内存改成page-locked memory。...以及,这样还可以在显存不够的时候,用内存临时撑一下(当然,买大显存的卡是正经的),这个特性的进化版本叫unified memory,在Pascal+上,支持的平台下(例如64-bit,和Linux下),

    1.2K20

    Objective-C Runtime 的一些基本使用

    在上一篇文章《Objective-C Runtime详解》中我们探讨了Runtime的基本原理,这篇文章我们将总结一下Runtime的一些基本使用 目录 查询方法 给分类添加属性 更换代码的实现方法...Runtime下没有真正意义上的私有变量和方法,因为这些私有变量和方法都可以通过Runtime方法获取,这当然包括系统的私有API。...当然不要忘了#import ....和《Effective Objective-C 2.0》中提到的: When the compiler saw that an object contained C++ objects, it would...当然,这个方法只是介绍了利用runtime进行字典转模型的原理,实际中还有很多需要考虑的细节,项目中我还是推荐使用像YYModel这些比较成熟而且安全的模型框架。

    1.2K80
    领券