oc中检测一个实例是否可变
来源:互联网 发布:域名过户 编辑:程序博客网 时间:2024/05/17 15:57
1.为检测一个实例是否可变,不能单单去看他得类。这些可变不可变都是类集群来实现,Cocoa骑士不是用文档中说明的那些类而是一个隐藏类来工作。这个隐藏类是透明的,我们也不用关心他时怎么工作的。因此下面的代码是错误的:
if ([NSStringFromClass([myObject class]) isEqualToString:@"__NSArray0<span style="font-family: Arial, Helvetica, sans-serif;">"]) {</span> //错误 }判断一个对象是否可变,看它对一个导致可变的方法是否有反应来判断。
if ([paramDict respondsToSelector:@selector(addObject:)]) { //正确 }
2.一个对象的真正类型只有在运行时才能确定 比如:
NSMutableDictionary *dic= [[NSDictionary alloc]init];//运行时才知道 dic的真正类型是NSDictionary [dic initWithCapacity:20];//虽然dic拥有NSMutableDictionary的方法,但是不能调用,否则程序崩溃。
3.可变不可变可以方便的进行转换
NSArray *array = [[NSArray alloc]init]; NSMutableArray *array1 = [NSMutableArray arrayWithArray:array]; NSLog(@"array:%@,array1:%@",[array class],[array1 class]);
输出结果:<span style="font-size:10px; font-weight: bold; font-family: Menlo;">array:__NSArray0,array1:__NSArrayM </span>
4.可变不可变的选择
不可变并非数组内的包含的对象不可变,而是一旦不可变数组创建后,就不能从中移除,添加,替换。要实现这些,通常使用他得子类。
不可变通常作为提供给外面的接口使用,防止被意外修改。
1 0
- oc中检测一个实例是否可变
- OC中实现可变参数
- c语言中关于可变参数的一个用法实例
- 如何检测一个系统中是否有木马程序
- 检测一个字符是否包含在另一个字符中
- 检测一个字符串是否在jvm的常量池中
- OC中删除可变数组中的元素
- 检测一个URL是否有效
- Ajax技术之与服务器通信-一个完整的实例(实现检测用户名是否唯一功能)
- [IOS 开发] OC 定义一个方法,参数数量可变.
- 检测实例是否重复执行 c# winform
- 检测实例或类方法是否有效
- 检测是否在虚拟机中
- 【Objective-C】OC中可变字符串(NSMutableString)常用方法
- OC中数组和可变数组用法<代码演示>
- OC中字典NSDictionary和可变字典NSMutableDictionary<代码演示>
- OC中对外不可变、对内实现可变
- OC中不可变数组与可变数组
- 第5周项目1(4)三角形类锥形
- 游戏中的角色类
- 第五周 项目一 游戏中的角色类
- 第三周3(2)输出空心三角形
- Excel中的几种函数用法
- oc中检测一个实例是否可变
- 错排公式详解
- PHP基础整理2
- 第5周项目1-三角形类雏形(2)
- 推荐一个.NET(C#)的HTTP辅助类组件–restsharp
- 面试宝典11
- 第五周项目一 三角形类雏形(2)
- 第五周分数减法
- 【poj 3252】Round Numbers 题意&题解&代码(C++)