一、runtime简介 RunTime简称运行时。OC就是运行时机制,也就是在运行时候 的一些机制,其中最主要的是消息机制。 对于C语言,函数的调用在编译的时候会决定调用哪个函数。 对于OC的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称 找到对应的函数来调用。 事实证明: 在编译阶段,OC可以调用任何
转载
2023-09-14 19:24:52
333阅读
一直想发关于Runtime的文章,但是由于读的资料一多,对Runtime的理解又加深了一些,所以总是改来改去,导致一篇都没发出来(其实是因为懒)。最近又有小伙伴问我,我也只好再次补老账了。。。---------啥是OC Runtime----------OC Runtime呢,其实就是一个Runtime库。(那啥是Runtime库呢?给你个小链接:)它主要以C和汇编语言为基础,使用面向对象的OC来
转载
2024-04-12 23:01:33
23阅读
RunTimeRunTime简称运行时。就是系统在运行的时候的一些机制,其中最主要的是消息机制。RunTime的2个重要特种C++等语言,在编译时就已经确定了,运行时就是找到内存的位置,然后执行代码;而在Objective-C中,方法的调用实际上是以一种叫“消息转发”的方式进行的,也就是告诉class/object,我要调用某个object/class的某个方法;但是!具体是否调用某个方法,如何调
转载
2024-06-14 23:04:26
51阅读
什么是Runtime总结起来,iOS中的RunTime的作用有以下几点:1.发送消息(obj_msgSend)2.方法交换(method_exchangeImplementations)3.消息转发4.动态添加方法5.给分类添加属性6.获取到类的成员变量及其方法7.动态添加类8.解档与归档9.字典转模型 runtime是一套比较底层的纯C语言API, 属于1个C语言库, 包含了很多底层的
转载
2024-06-26 10:13:24
72阅读
概述Runtime的内容大概有:动态获取类名、动态获取类的成员变量、动态获取类的属性列表、动态获取类的方法列表、动态获取类所遵循的协议列表、动态添加新的方法、类的实例方法实现的交换、动态属性关联、消息发送与消息转发机制等。当然,本篇博客总结的是运行时常用的功能,并不是所有Runtime的内容。OC的方法调用流程1、编译器会把`[blackDog walk]`转化为`objc_msgSend(bla
转载
2023-12-13 11:44:16
105阅读
今天简单来说下runtime的具体应用场景有哪些?1.给分类添加属性正常来说分类是不能添加属性的,但是利用runtime的机制就可以实现这个功能,主要是通过关联对象的方式实现,代码如下:// .h代码
#import <Foundation/Foundation.h>
@interface NSObject (Name)
@property (nonatomic,copy)NSSt
原创
精选
2024-04-04 22:23:12
207阅读
OC语言中最为强大的莫过于OC的运行时机制-Runtime,但因其比较接近底层,一旦使用Runtime出现bug,将很难调试,所以Runtime在开发中能不用就不用.下面我将介绍一些Runtime在开发中的使用,已经面试可能遇见的面试题. 1.OC语法和Runtime语法的区别 OC语法和Runtime语法的区别,换而言之就是OC中我们写的语句,最终被转换成Runtime中什么样语句.由于Xco
转载
2023-12-31 15:12:25
68阅读
Runtime 理解介绍的文章非常多,我只想讲讲Runtime 可以用在哪里,而我在项目里哪些地方用到了runtime。多以实际使用过程为主,来介绍runtime的使用。* 那么runtime 怎么使用?可以用在哪些场景下呢?* 首先,使用runtime 相关API,要#impor...
转载
2016-07-26 16:26:00
191阅读
RunLoop01基础知识一简介1 什么是RunLoop2 基本作用3 如果没有RunLoop4 如果有了RunLoop5 main函数中的RunLoop6 重要说明二RunLoop对象三获得RunLoop对象1 Foundation2 Core Foundation四RunLoop资料1 苹果官方文档2 CFRunLoop源码 RunLoop01——基础知识一、简介1.1 什么是RunLoop
转载
2024-10-13 19:24:28
34阅读
# iOS Delegate 使用场景详解
在 iOS 开发中,Delegate 模式是一种重要的设计模式,它通过委托的方式让对象间进行通信而不需要强耦合。Delegate 模式广泛用于处理用户交互、数据传输和其他事件。本文将介绍 Delegate 的工作原理、使用场景,并给出相关代码示例。
## Delegate 的工作原理
Delegate 的核心在于一个协议和一个实现该协议的代理类。协
1. cutcut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。1.基本用法cut [选项参数] filename
说明:默认分隔符是制表符2.选项参数说明选项参数功能-f列号,提取第几列-d分隔符,按照指定分隔符分割列3.案例实操(0)数据准备
[ch@hadoop101 datas]$ touch cut.
在开发中经常会遇到这种情况,自己开启了个定时器,但是在某些情况下的时候,timer的方法不响应,但是timer仍然开启着;这种情况就是timer所在的Runloop暂时关闭了。一、RunLoop 与NSRunLoopCommonModes当nstimer 使用scheduledTimerWithTimeInterval方法的时候,此时的nstimer会被加入到当前的线程的RunLoop
转载
2023-10-02 11:02:43
105阅读
用户模板一:用户名小明性别,年龄男,20岁用户状况单身,在校大学生生活爱好喜欢打篮球,唱歌典型场景希望找到一个心仪的可以走到最后的姑娘典型描述交友用户比例? 用户场景一:春天来了,渴望自己的爱情希望在表白墙上通过交友获得自
转载
2023-11-20 13:31:09
176阅读
好的书籍都是值得反复看的,那好的文章,好的资料也值得我们反复看。我们在不同的阶段来相同的文章或资料或书籍都能有不同的收获,那它就是好文章,好书籍,好资料。关于iOS 中的RunLoop资料非常的少,以下这些资料都是非常好的。
CF框架源码(这是一份很重要的源码,可以看到CF框架的每一次迭代,我们可以下载最新的版本来分析,或与以下文章对比学习。目前最新的是CF-1153.18.tar.gz)
R
转载
2023-09-27 19:18:37
71阅读
AppDelegate.h模板 MyViewController; MyAppDelegate,其中NSObject表示它的“类”符合UIApplicationDelegate协议,接着UIApplicationDelegate,此方法为应用程序提供了关于触发的关键事件信息,例如什么时候程序运行完成,什么时候内存不足,什么时候重要变化发生
转载
2023-07-10 22:51:17
86阅读
概述Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的。
调用runtimeAPI需要导入都文件#import <objc/runtime.h>常用的runtime函数// 获取一个类的Class类型(类对象)
objc_getClass(const char * _Nonnull name)
转载
2023-08-11 17:09:27
68阅读
iOS中的KVO(Key-Value Observing)是一个强大的功能,用于监听对象属性的变化。在复杂的使用场景中,KVO不仅需要确保正确性,还要兼顾性能与可维护性。本文将通过分步指南详细探讨iOS KVO的复杂使用场景,包括环境准备、配置详解、验证测试等。
首先,进行环境准备,我们需要确保软硬件的要求。
## 环境准备
### 软硬件要求
- **操作系统**:macOS 10.14
Block 是 Objective-C 中笔者最喜欢的特性,它为 Objective-C 这门语言提供了强大的函数式编程能力,而最近苹果推出的很多新的 API 都已经开始原生的支持 block 语法,可见它在 Objective-C 中变得越来越重要。这篇文章并不会详细介绍 block 在内存中到底是以什么形式存在的,主要会介绍 block 是如何持有并且释放对象的。文章中的代码都出自
iOS 中的 delegate 模式是一个非常常用的设计模式,它允许一个对象将某些操作或信息传递给另一个对象,从而创建一种松耦合的关联。在这里,我们将探讨 iOS delegate 的使用场景,并以此为基础进行深入的分析,涵盖版本对比、迁移指南、兼容性处理、实战案例、性能优化和生态扩展等多个方面。
首先,我们来看看最新版本与之前版本的特性差异。
### 版本对比
为了更好地理解 iOS de
在iOS开发中,常驻线程的使用场景非常重要,尤其是对性能和用户体验的考虑。常驻线程可以用来处理长时间运行的任务,保持应用的响应性。在本篇文章中,我们将深入探讨与iOS常驻线程相关的多个方面,包括协议背景、抓包方法、报文结构等。
## 协议背景
在讨论iOS常驻线程之前,我们先了解一下与其相关的协议演变过程。常驻线程的理念与操作系统的发展密切相关。以下是协议发展的时间轴:
- **2007年*