美文网首页
对象Object介绍:2-对象操作

对象Object介绍:2-对象操作

作者: 赵亦晨 | 来源:发表于2016-10-17 17:46 被阅读0次

本节主要介绍对象的一些常见操作,例如判断对象的类型、判断对象是否响应消息、对象间的比较以及对象复制。

1、判断对象的类型

可以让对象调用isKindOfClass:方法,来判断某个对象的类型。isKindOfClass:方法是NSObject类的方法,将类型为Class的对象aClass作为参数传入,返回一个BOOL类型的返回值。

-(BOOL)isKindOfClass:(Class)aClass;

例如,下面的代码用来判断str是否是NSString类型,如果是NSString类型,则打印一段日志。

//使用类方法创建字符串对象

NSString*str=[NSStringstringWithFormat:@"www.hcios.com"];

//判断对象的类

if([str isKindOfClass:[NSStringclass]]){

NSLog(@"str class is NSString");

}

另外,isKindOfClass:方法还可以用于判断子类对象的类型,如下面的代码所示,NSMutableString是NSString的子类,代码执行后,isKindOfClass:方法也会认定mutableStr对象也是属于NSString类型。

NSMutableString*mutableStr=[NSMutableStringstring];

if([mutableStr isKindOfClass:[NSStringclass]]){

NSLog(@"mutableStr class is NSString");

}

2、判断对象是否响应消息

要判断一个对象是否响应一则消息,则可以调用respondsToSelector:方法。应用程序通常在验证一个对象响应一则消息后,才将消息发送给该对象。

这种机制,常常用于代理中,先判断代理对象是否响应代理方法,如果响应则代表代理中已经实现了代理方法,然后再通知代理执行代理方法。

示例代码:

在自定义类.h文件中,添加一个属性

#import

@interfaceHCClass:NSObject

@property(nonatomic,copy)NSString*myName;

@end

在自定义类.m文件中,对属性进行懒加载(getter方法)

-(NSString*)myName{

if(_myName==nil){

_myName=@"this is my name!";

}

return_myName;

}

在main()中,判断自定义类是否实现了属性的getter方法

//判断对象是否响应消息

HCClass*myClass=[[HCClassalloc]init];

if([myClass respondsToSelector:@selector(myName)]){

NSLog(@"MyName method exist!");

}

3、对象比较

可以使用isEqual:方法对比两个对象,如果相同,则该方法返回YES。

在最常用的Foundation框架中,也提供了isEqualToString:或者isEqualToDictionary:等方法,在实际开发中使用比较广泛。

下方的示例代码中,对字符串进行了比较操作,使用了isEqual:方法以及isEqualToString:方法。

intmain(intargc,constchar*argv[]){

@autoreleasepool{

NSString*str=[NSStringstringWithFormat:@"www.hcios.com"];

NSString*str2=@"宏创学院";

//对象比较

if([str isEqual:str2]){

NSLog(@"str is equal str2!");

}else{

NSLog(@"str is NOT equal str2!");

}

if([str isEqualToString:@"www.hcios.com"]){

NSLog(@"str is equal to string: \"www.hcios.com\"!");

}

}

return0;

}

4、对象复制

通过调用copy方法,可以创建对象的副本。调用copy方法,有个前提条件,即接收的对象的类必须遵守NSCopying协议。

下面的示例代码中,对NSString类型的字符串对象进行复制,NSString类在定义中遵守了NSCopying协议。

@interfaceNSString:NSObject//遵守了NSCopying协议

intmain(intargc,constchar*argv[]){

@autoreleasepool{

NSString*str=[NSStringstringWithFormat:@"www.hcios.com"];

//对象复制

NSString*str3=[str copy];

NSLog(@"str3 is :%@ A",str3);

}

}

return0;

相关文章

  • 对象Object介绍:2-对象操作

    本节主要介绍对象的一些常见操作,例如判断对象的类型、判断对象是否响应消息、对象间的比较以及对象复制。 1、判断对象...

  • DOM和BOM

    BOM 介绍 BOM:browser object model浏览器对象模型,用对象操作浏览器 window对象是...

  • 网络编程

    2.1、对象流:操作对象的 ObjectInputStream readObject()--->Object-...

  • 阮一峰JS教程读后感(六)标准库-Object、属性描述对象

    一、Object对象 JavaScript 原生提供Object对象(注意起首的O是大写),本章介绍该对象原生的各...

  • java面向对象——object对象介绍

    一.定义: 1.java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。 2.Object类是类层次...

  • JavaScript 学习 (2) -- 数组

    对象 (Object) 创建Object实例的方式有两种: 使用new操作符后跟Object构造函数 使用对象字面...

  • object对象的操作

    JS中的对象就是一个以键值对形式存储属性的一个集合,每一个属性有一个特定的名称,并与名称相对应的值。可以称之为映射...

  • 类分包

    entity 存放实体对象 dao Data Access Object 数据访问对象。存放实体对象的操作方法...

  • JS高级3-语言特性

    一、 JS面向对象编程 1、 面向对象介绍 什么是对象? Everything is object (万物皆对象)...

  • JS面向对象—Object对象的相关方法

    JavaScript 在Object对象上面,提供了很多相关方法,处理面向对象编程的相关操作。 Object.ge...

网友评论

      本文标题:对象Object介绍:2-对象操作

      本文链接:https://www.haomeiwen.com/subject/lphzyttx.html