雨花石的博客通过本文主要向大家介绍了ios,读书笔记,类型信息查询等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
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
}
您可能想查找下面的文章:
- 代码持续更新tableview与用户滑动tableview冲突?
- 为什么NSMutableArray继承于NSArray
- 制作的framework项目含masonry,如何处理避免冲突
- IOS有没有类似安卓的AccessibilityService功能
- UITableViewCell加载多张图片导致内存异常暴增
- iOS,我在Githubfork别人的仓库后更改了代码,可以用CocoaPods把我的仓库加入项目里吗?
- iOS根视图切换到一个新的根视图时,该如何释放之前的根视图?
- 关于时间戳转换为NSDate和标准格式
- iOSAPP后台运行收到推送语音播报无效急急急!!!
- 黑屏屏保ios横屏偶尔一半黑屏的bug是可以解决的吗