/**
1).判断对象是不是指定类的对象或者指定类的子类对象.
- (BOOL)isKindOfClass:(Class)aClass; 2).判断对象是不是1个特定类型的对象,不包括子类.
- (BOOL)isMemberOfClass:(Class)aClass; 3).判断1个类是不是另外1个类的子类.
+ (BOOL)isSubclassOfClass:(Class)aClass; 4).判断对象中是否能响应指定的方法. 这个最常用.
- (BOOL)respondsToSelector:(SEL)aSelector; 5).判断类中是否能响应指定方法.
+(BOOL)instancesRespondToSelector:(SEL)aSelector; */
#import <Foundation/Foundation.h>
#import "DogSon.h" int main(int argc, const char * argv[]) {
@autoreleasepool { // 3).判断1个类是不是另外1个类的子类.
Class c = [Dog class];
BOOL res = [DogSon isSubclassOfClass:c];
NSLog(@"%d",res); }
return ;
}
// 判断 某个类是否能相应制定方法
void demo3(){
SEL s = @selector(play);
BOOL res = [Dog instancesRespondToSelector:s];
NSLog(@"%d",res); }
// 判断某个对象能否相应某个方法
void demo2()
{
Dog *son = [DogSon new]; SEL s = @selector(play); BOOL res = [son respondsToSelector:s]; NSLog(@"%d",res);
}
// 判断对象是不是1个特定类型的对象,不包括子类.不包括父类
void demo1(){
DogSon *son = [DogSon new]; // 获取狗的类对象
Class dog = [Dog class]; // 判断对象是不是1个特定类型的对象,不包括子类.不包括父类
BOOL res = [son isMemberOfClass:dog]; NSLog(@"%d",res);
} // 判断某个对象是否是某个类创建出来的对象
void demo()
{
DogSon *son = [DogSon new]; // 获取小狗的类对象
Class dog = [DogSon class]; //检查son对象是否是小狗类创建出来的对象
BOOL res = [son isKindOfClass:dog]; NSLog(@"%d",res);
}
#import <Foundation/Foundation.h>
#import "Dog.h"
int main(int argc, const char * argv[]) {
@autoreleasepool { Dog *d = [Dog new];
//- (void)run;
[d performSelector:@selector(run)];
//- (void)name:(NSString *)name;
[d performSelector:@selector(name:) withObject:@"哈利"];//方法名是name:,performSelector:withObject:是方法名, }
return ;
}

oc-26-动态类型检测的更多相关文章

  1. 六.OC基础--1. id和instancetype类型,2.动态类型检测,3.响应方法,构造方法,4.重写构造方法,5.自定义构造方法

    1. id和instancetype类型, id和instancetype类型区别: 1. id和instancetype都可以用来作为方法的返回值 2. id可以用来定义类型,instancetyp ...

  2. Objective-C 【动态类型检测&响应方法】

    ------------------------------------------- 动态类型检测 代码: #import <Foundation/Foundation.h> @inte ...

  3. OC 动态类型和静态类型

    多态 允许不同的类定义相同的方法 动态类型 程序直到执行时才能确定所属的类 静态类型 将一个变量定义为特定类的对象时,使用的是静态形态 将一个变量定义为特定类的对象时,使用的是静态类型,在编译的时候就 ...

  4. objective-c系列-动态类型和动态绑定

    /* 静态类型: 变量的类型在编译之时就被确定下来. 动态类型: 对象的类型由对象的内存里的某个结构数据来决定它是什么类型, 而不是在编译之时就被确定下来的数据类型. 对象的类型只有在运行时才知道. ...

  5. OC 动态类型,动态绑定,动态加载

    OC 动态类型,动态绑定,动态加载 Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有 动态类型(Dynamic typing) 动态绑定(Dynamic binding) ...

  6. OC基础6:多态、动态类型和动态绑定

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.关于SEL类型的数据: (1).SEL ...

  7. 五.OC基础--1.多态,2.类对象,3.点语法,4.@property&@synthesize,5.动态类型,内省(判断对象是否遵循特定的协议,以及是否可以响应特定的消息)

    五.OC基础--1.多态, 1. 多态概念,定义:多态就是某一类事物的多种形态: 表现形式: Animal *ani = [Dog new]; 多态条件:1.有继承关系 2.有方法的重写 2.多态代码 ...

  8. 为什么说OC是运行时语言?什么是动态类型、动态绑定、动态加载?

    转载:https://www.cnblogs.com/dxb123456/p/5525343.html 动态: 主要是将数据类型的确定由编译时,推迟到了运行时. 这个问题其实浅涉及到两个概念,运行时和 ...

  9. [python学习手册-笔记]004.动态类型

    004.动态类型 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明作者和出 ...

  10. Object-C中动态类型对象相关操作汇总

    Object-C(以后简称OC)中有id类型,相对于明确定义类型的静态类型,称为动态类型. 使用动态类型,配合多态(不同类型拥有同名方法),动态绑定(运行时决定实际调用的方法)可以将很多判断延迟到运行 ...

随机推荐

  1. .NET中的Newtonsoft.Json.JsonConvert.SerializeObject(string a)

    1.將string a 序列化為Json格式: 2.使用條件:將Newtonsoft.Json.dll作為引用添加到項目中.下载地址在这:http://json.codeplex.com/

  2. Android通过tcpdump抓包

    1. 手机要有root权限 2. 下载tcpdump   http://www.strazzere.com/android/tcpdump 3. adb push c:\wherever_you_pu ...

  3. mac机器下远程仓库添加完毕之后,却无法上传应有的内容。

    Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you ha ...

  4. SQL Server UDF用户自定义函数

    UDF的定义 和存储过程很相似,用户自定义函数也是一组有序的T-SQL语句,UDF被预先优化和编译并且尅作为一个单元爱进行调用.UDF和存储过程的主要区别在于返回结果的方式. 使用UDF时可传入参数, ...

  5. HDU2033 人见人爱A+B 分类: ACM 2015-06-21 23:05 13人阅读 评论(0) 收藏

    人见人爱A+B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  6. Unity3D Script Keynote

    [Unity3D Script Keynote] 1.创建GameObject if(GUILayout.Button("创建立方体",GUILayout.Height(50))) ...

  7. C++11显式虚函数重载

    [C++11显式虚函数重载] 在子类中给重载的虚函数加上override, 可以让编译器检察基类是否有这一虚函数.此功能适用于当基类原有的虚函数发生变化,即相当于编译期检察. 而基类,可以给函数加上f ...

  8. 常见mongo命令

    @(编程) 查询 db.getCollection('SalaryEntity').find({"Month" : "201601"}) db.getColle ...

  9. esp8266烧写机智云固件方法

    转:http://blog.csdn.net/k7arm/article/details/51925941 =====================以下为我转载的文章================ ...

  10. 咏南多层开发框架支持最新的DELPHI 10 SEATTLE

    购买了咏南多层开发框架的老用户如有需要提供免费升级. 中间件