iOS之《Effective Objective-C 2.0》读书笔记(14)
2017-08-23 16:42
501 查看
第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 }
相关文章推荐
- iOS之《Effective Objective-C 2.0》读书笔记(9)
- iOS之《Effective Objective-C 2.0》读书笔记(11)
- iOS之《Effective Objective-C 2.0》读书笔记(12)
- iOS之《Effective Objective-C 2.0》读书笔记(22)
- <<Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法>>读书笔记之objc_msgSend
- iOS之《Effective Objective-C 2.0》读书笔记(45)
- 《Effective Objective-C 2.0编写高质量iOS与OS X代码的52个有效方法》读书笔记(上)
- 《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》--读书笔记
- iOS之《Effective Objective-C 2.0》读书笔记(51)
- iOS-Effective Objective-C 2.0 读书笔记(三)
- iOS之《Effective Objective-C 2.0》读书笔记(28)
- iOS之《Effective Objective-C 2.0》读书笔记(42)
- iOS之《Effective Objective-C 2.0》读书笔记(49)
- 编写高质量的iOS代码--Effective Objective-C 2.0 读书笔记
- iOS之《Effective Objective-C 2.0》读书笔记(41)
- 《Effective Objective C 2.0 编写高质量iOS与OS X代码的52个有效方法》读书笔记
- iOS之《Effective Objective-C 2.0》读书笔记(16)
- iOS之《Effective Objective-C 2.0》读书笔记(21)
- iOS之《Effective Objective-C 2.0》读书笔记(3)
- iOS-Effective Objective-C 2.0 读书笔记(二)