object_getClass 含义

OC中以delegate形式页面传值 oc中以delegate实现页面间的传值过程 立即下载

objc的runtime中有两种判断类型的方式比较靠谱,他们可以直接取得任意一个objc_object(和id是完全一样的数据类型)的类或者类名。其函数如下:

//Returns the class name of a given object.
const char *object_getClassName(id obj);
 
//Returns the class of an object.
Class object_getClass(id object);

第一个函数可以返回任意一个id的类名,第二个函数可以返回任意一个id的Class。这两个函数各有优劣。使用第一个函数判断类型是否改变的优点是在 iphone开发环境下默认公开,可以随便调用,缺点是要使用几字节的内存空间用于存放字符串,而且做字符串比较要稍微多花费一些CPU时间。第二个函数 优点是可以将获取的Class指针做为int型保存起来,只需要4字节,且比较起来节约CPU时间,坏处是我们要手动声明一下此函数才可以在自己的代码里 使用,否则会出现一个warning,提示“Implicit declaration of function ‘object_getClass’ is invalid in C99”,不过手动声明一下只要加一行代码就可以,也不麻烦。

下面是一个实例:

// WebService.h

#import <Foundation/Foundation.h>

@protocol ServiceDelegate;

@interface WebService : NSObject {
    id <ServiceDelegate> _myDelegate;
    Class _originalClass;
}

@property (nonatomic, assign) id myDelegate;

- (void)postDataWithURL:(NSString *)myURL postData:(NSDictionary *)dataDic setDelegate:(id)theDelegate;
- (void)serviceFun:(NSDictionary *)paramDic;

@end

@protocol ServiceDelegate <NSObject>
- (void)serviceCallBack:(id)resultObject serviceFlag:(NSInteger)flag;
@end
// WebService.m

#import "WebService.h"

Class object_getClass(id object);

@implementation WebService

@synthesize myDelegate = _myDelegate;

- (void)postDataWithURL:(NSString *)myURL postData:(NSDictionary *)dataDic setDelegate:(id)theDelegate
{
    self.myDelegate = theDelegate;
    _originalClass = object_getClass(theDelegate);
    [NSThread detachNewThreadSelector:@selector(serviceFun:) toTarget:self withObject:dataDic];
}

- (void)serviceFun:(NSDictionary *)paramDic
{
    Class currentClass = object_getClass(self.myDelegate);
    if (currentClass == _originalClass) {
        // 如果delegate没有被释放
    }
}

@end
 
 
http://www.wuleilei.com/blog/320
别再手动抄表了!用PaddleOCR超轻量模型5分钟搞定数字仪表识别(附完整Python代码) 本文介绍如何利用PaddleOCR超轻量模型快速实现工业仪表数字识别自动化。通过5行核心代码和关键预处理步骤,显著提升识别准确率至98.2%,解决传统OCR在工业场景中的体积大、抗干扰弱等问题,并提供完整Python代码和边缘部署优化方案。 阅读详情

相关推荐

Unity 升级 xLua 版本,编译不同平台链接库

Unity 升级 xLua 详解

LymanCao的专栏 1801

iOS中判定delegate是否已经被释放掉

在iOS的实际开发过程中,常常会遇到内存管理的问题。有一种特别常见的ne

manlxb的专栏 2504

保姆级教程:用TI IWR6843雷达板跑通3D人体追踪demo(附CCS/UniFlash避坑指南)

本文提供了一份详尽的TI IWR6843毫米波雷达开发板3D人体追踪demo实现指南,涵盖开发环境搭建、工程导入编译、固件烧录及可视化工具配置全流程。特别针对CCS和UniFlash使用中的常见问题给出解决方案,帮助开发者快速掌握3D People Tracking技术应用。

weixin_29159441的博客 504

在请求完成后回调delegate的方法。然而回调时经常遇到这种情况:delegate已经被释放...

最近的项目遇到了网络请求,需要在请求完成后回调delegate的方法。然而回调时经常遇到这种情况:delegate已经被释放,这时调用其方法则会引起crash。 objc的runtime中有两种判断类型的方式比较靠谱,他们可以直接取得任意一个objc_object(和id是完全一样的数据类型)的类或者类名。其函数如下: //Returns the class name of a given o...

weixin_34179762的博客 265

WRF所需气象数据的下载方法

#数据下载是个大问题,巧妇难为无米之炊,没有数据就无法模拟啦,疫情期间国外服务器响应慢,打开网页慢都很正常啦~ WRF数据所需要的外部数据分为两种:静态地理数据,grib格式的气象数据(NAM、GFS、RUC、AGRMET等)。静态地理数据可以从WRF官网获得,比较简单,这里不做介绍。所以这篇日志重点介绍的是气象数据的获取。 提前说明,WRF官网不提供气象数据,但WRF官网提供各类气象数据的下载网址链接,所以我们下载一般还是从WRF官网开始。首先进入WRF官网,然后点击WRF ARW Uusres’ .

六出的博客 1万+

Kubernetes集群环境搭建与初始化

Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

m0_75254642的博客 1525

iOS中的delegate的用法和规范

Objective-C中的delegatedelegate是Objective-C编写的应用中各种对象之间互相调用的主要方式之一. 通常情况下, 对象可以接收的消息都通过在接口文件中声明的方法来表示.@protocol MyProtocol <NSObject> - (void)func; @end什么是delegatedelegate是委托模式.委托模式是将一件属于委托者做的事情,交给另外一个被委

晓月的专栏 3万+

华为海思2026届数字IC秋招笔试高频考点解析与实战技巧(2025最新版)

本文深入解析华为海思2026届数字IC秋招笔试的高频考点与实战技巧,涵盖时序优化、低功耗设计、DFT规则等核心模块。针对2025年最新真题,提供详细的解题思路和工程经验,帮助考生高效备考。特别关注SystemVerilog约束随机测试等新增考点,助力考生在秋招笔试中脱颖而出。

m2n3o4p5的博客 415

iOS开发之回调delegate的方法时判断delegate是否已经被释放

最近的项目遇到了网络请求,需要在请求完成后回调delegate的方法。然而回调时经常遇到这种情况:delegate已经被释放,这时调用其方法则会引起crash。 objc的runtime中有两种判断类型的方式比较靠谱,他们可以直接取得任意一个objc_object(和id是完全一样的数据类型)的类或者类名。其函数如下: //Returns the class name of a given

ch_soft的专栏 1万+

PDAF相位对焦原理

pdaf光路图

camerall 1万+

PCL 八叉树的使用

八叉树(Octree)是一种空间划分的数据结构,广泛应用于三维点云的处理和分析。八叉树通过将空间递归地划分为八个子区域,可以有效地组织和索引三维点数据,提升点云的查询、降采样和配准等操作的效率。

纵马踏花向自由 1658

Object getClass()方法

小菜总结到 大家都知道Object类有一个getClass()方法 打开API看看它是这样说的 [color=red]返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。 返回:表示此对象运行时类的 Class 对象。[/color] 疑问来了 返回此Object的运行时类 它这里Object运...

低级写手 我自由了 394

数学建模算法案例精讲500篇-【深度强化学习】深度确定性策略梯度(DDPG)(附MATLAB和python代码实现)

它是一种学习连续动作的无模型策略算法。它结合了DPG(确定性策略梯度)和DQN(深度Q网络)的思想。它利用DQN中的经验重放和延迟更新的目标网络,并基于DPG,可以在连续的动作空间上运行。# 用于生成带有噪声的动作def __init__(self, action_space, mu=0.0, theta = 0.15, max_sigma = 0.3, min_sigma = 0.3, decay_period = 100000):#decay_period要根据迭代次数合理设置# 均值 mu。

qq_36130719的博客 325

Java中super.getClass方法调用

看一个例子程序,看看最后的输出结果是多少? import java.util.Date; public  class Test extends Date {       public void test()       {               System.out.println(super.getClass().getName());       }

winderrmx的专栏 687

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

借用 object_getClass 窥测神器

创建一个 `NSArray` 对象和一个 `NSMutableArray` 对象,并分别对其执行 `object_getClass` 方法。

侯仕奇的博客 588

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java中class t obj_Java中泛型Class<T>、T与Class<?>、 Object类和Class类、 object.getClass()和Object.class...

单独的T 代表一个类型(表现形式是一个类名而已) ,而Class代表这个类型所对应的类(又可以称做类实例、类类型、字节码文件),Class表示类型不确定的类Class表示T类型的字节码文件,意思是:Class 相当于Class c=T.class,T t new T() ;或者Class c= t.getClass();通过以上可以获取类名为c.getName();解释:Class ct=...

weixin_36024829的博客 340

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Object源码解析

Object:我是所有类的祖先 java.lang.Object 这个类看似其貌不扬,但在Java中的地位就像南方古猿"lucy"在人类中的地位一样——我们所有人的身体里都有她的基因。 当一个类SonClass没有显式的父类时,编译器就会默认Object是它的父类;反之SonClass有显示的父类FatherClass,沿着FatherClass向上追溯,会发现它也是Object类的血脉,所以Ob...

AdamSong的博客 378

Java面向对象-Object

【代码】Java面向对象-Object。

weixin_47234283的博客 417

Java中泛型Class<T>、T与Class<?>、 Object类和Class类、 object.getClass()和Object.class

一.区别 单独的T 代表一个类型(表现形式是一个类名而已) ,而Class<T>代表这个类型所对应的类(又可以称做类实例、类类型、字节码文件),Class<?>表示类型不确定的类 E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number(数值类型...

weixin_30767921的博客 110

java object 源码_java源码解析之Object类

/** Object类是类层次结构的根。每个类都有 Object作为超类。所有对象,包括数组,实现这个类的方法。*/public classObject {/*native:* 我们看到了有好几个方法是由native修饰的,那么native方法是什么意思呢?* native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。* Jav...

weixin_39568172的博客 131

Java中泛型 Class<T>、T与Class<?>、 Object类和Class类、 object.getClass() 和 Object.class...

From:Java中泛型 Class<T>、T与Class<?>、 Object类和 Class类、 object.getClass() 和 Object.class :https://www.cnblogs.com/zhaoyanhaoBlog/p/9362267.html Class<T>...

墨鱼菜鸡 4423

Java——Object类

类 java.lang.Object是类层次结构的根类,即所有其它类的父类。每个类都使用 Object 作为超类。(父类和超类是一个意思,不同的叫法)也就是当初的Java语言设计时,就将Object作为所有类的父类,是万类之父。①Object类型的变量与除Object以外的任意引用数据类型的对象都存在多态引用。②所有对象(包括数组)都实现这个类的方法。③如果一个类没有特别指定父类,那么默认则继承自Object类。

Elon15的博客 396

java中的万物之父---Object类

万物之父—Object类 1.Object类的应用 ​ 1.1.Object作为参数 ​ Object作为参数可以接受任何类型的对象。包括基本数据类型、引用数据类型。 ​ 1.2.Object作为返回值 ​ Object作为返回值可以返回任意类型的值 ​ 无论作为哪种情况,都最好在特定的场景下才使用,不然对参数的处理比较麻烦 //Object类:所有类的父类或间接父类 public clas...

qq_41187393的博客 349

java所有类都是object的子类_java基础之Object类解析(一)

1. 导读java中每新增一个类, 他的父类都是Object类, 那么Object类中的方法都会被子类继承, 今天主要来看看Object中的5个方法;1.1 getClass();1.2 hashCode();1.3 equals();1.4 clone();1.5 toString();2. getClass方法getClass()方法是用来获取运行时的对象; 当声明对象和.class文件中真正...

weixin_34898216的博客 1612

Java面向对象_Object中的方法

整理了一些Java面向对象的笔记,记录在这里 @Sungree Object Java中所有的东西都是对象 Object是类的根,所有类都默认继承Object Object类提供了一系列方法 equals 声明 public boolean equals(Object){ return; } 双等号与equals()的区别 双等号是运算符,比较两边变量的值是否相等。...

Sungree的博客 339

JAVA的根对象Object到底有多少种方法?!

引用JAVASE源码的解释: Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class. 1.根类Object到底有多少个方法:? 通过JavaSE1.8源码可知是11个!!(看源码很重要) 分别是: clone():复制与返回一个相同的对象 equal

weixin_40672438的博客 313
上一篇: Xcode 无提示解决方案
下一篇: IOS 精准计时
Robincui2011
博客等级 码龄15年 21粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值