iOS之《Effective Objective-C 2.0》读书笔记(14)
来源:互联网 发布:matlab编程与工程应用 编辑:程序博客网 时间:2024/05/29 17:50
第14条:理解“类对象”的用意
1.用类型信息查询方法来检视类继承体系
- isMemberOfClass: 能够判断出对象是否为某个特定类的实例
- isKindOfClass: 则能够判断出对象是否为某类或其派生类的实例
NSMutableDictionary *dict = [NSMutableDictionary new]; [dict isMemberOfClass:[NSDictionary class]]; ///< NO [dict isMemberOfClass:[NSMutableDictionary class]]; ///< YES [dict isKindOfClass:[NSDictionary class]]; ///< YES [dict isKindOfClass:[NSArray class]]; ///< NO
2.类型信息查询方法的具体应用
- 根据数组中存储的对象生成以逗号分隔的字符串,并将其存至文本文件
- (NSString*)commaSeparatedStringFromObjects:(NSArray*)array { NSMutableString *string = [NSMutableStringnew]; for (id object in array) { if ([object isKindOfClass:[NSStringclass]]) { [string appendFormat:@"%@,", object]; } else if ([object isKindOfClass:[NSNumberclass]]) { [string appendFormat:@"%d,", [object intValue]]; } else if ([object isKindOfClass:[NSDataclass]]) { NSString *base64Encoded = /* base64 encoded data */; [string appendFormat:@"%@,", base64Encoded]; } else { // Type not supported } } return string; }
3.不要直接比较类对象
- 要使用==操作符,而不要使用比较Objective-C对象时常用的“isEqual:”方法(参见第8条)。原因在于,类对象是“单例”(singleton),在应用程序范围内,每个类的Class仅有一个实例。也就是说,另外一种可以精确判断出对象是否为某类实例的办法是:
id object = /* ... */; if ([object class] == [EOCSomeClassclass]) { // 'object' is an instance of EOCSomeClass }
阅读全文
0 0
- iOS之《Effective Objective-C 2.0》读书笔记(14)
- <iOS读书笔记>之Effective Objective-C 2.0
- iOS之《Effective Objective-C 2.0》读书笔记(1)
- iOS之《Effective Objective-C 2.0》读书笔记(2)
- iOS之《Effective Objective-C 2.0》读书笔记(3)
- iOS之《Effective Objective-C 2.0》读书笔记(4)
- iOS之《Effective Objective-C 2.0》读书笔记(5)
- iOS之《Effective Objective-C 2.0》读书笔记(6)
- iOS之《Effective Objective-C 2.0》读书笔记(7)
- iOS之《Effective Objective-C 2.0》读书笔记(8)
- iOS之《Effective Objective-C 2.0》读书笔记(9)
- iOS之《Effective Objective-C 2.0》读书笔记(10)
- iOS之《Effective Objective-C 2.0》读书笔记(11)
- iOS之《Effective Objective-C 2.0》读书笔记(12)
- iOS之《Effective Objective-C 2.0》读书笔记(13)
- iOS之《Effective Objective-C 2.0》读书笔记(16)
- iOS之《Effective Objective-C 2.0》读书笔记(17)
- iOS之《Effective Objective-C 2.0》读书笔记(21)
- nodejs+layui+laytpl实现分页的例子
- activity活动的四种启动模式
- swift Data 扩展
- Java-abstract(抽象)、final、static
- Dubbo入门学习--Dubbo服务提供接口SPI机制
- iOS之《Effective Objective-C 2.0》读书笔记(14)
- spark的transformation和action算子(基本操作)
- POI
- FFmpeg基本介绍
- intellij struts2.x 部署tomcat 手机访问项目(已修复)
- My understand of Euclidean distance in digital image processing
- Material Design风格之Snackbar
- apache
- IntelliJ IDEA里Maven默认情况下编译版本为JDK1.5