面向对象5
来源:互联网 发布:淮安java培训机构 编辑:程序博客网 时间:2024/06/05 16:55
OC的包装类
以下不是包装类:
- NSInteger 大致等于 long 型整数
- NSUInteger 大致等于 unsigned long 型整数
- CGFLoat 在64位平台大致相当于 double ,在32为平台大致相当于 float
包装类:
- NSValue
- NSNumber
NSValue 是 NSNumber的父类,NSValue 代表一个更通用的包装类,NSNumber是更具体的包装类,NSNumber主要包括以下三个方法:
- +numberWithXxx: 将特定类型值包装秤 NSNumber
- -initWithXxx: 需要先创建一个 NSNumber 对象,再用一个基本类型的值来初始化NSNumber
- -xxxValue: 返回该 NSNumber 对象包装的基本类型值
PS: xxx代表int、char等各种基本类型
NSNumber* num = [NSNumber numberWithInt:20];NSLog(@"%d", [num intValue]);NSNumber* ch = [[NSNumber alloc] initWithChat:'J'];NSLog(@"%@", ch);
处理对象
打印对象和description
NSLog(@"变量为: %@", p); // 等价于 NSLog(@"变量为:%@", p.description);
@”张三” 和 [NSString stringWithFormat:@”张三”]的区别:
- 对于前者,系统会使用常量池来管理这些字符串,而常量池中相同字符串只会有一个,所以代码 NSSting* s1 = @”张三”; NSString* s2 = @”张三”; 这两个指针指向的是同一个地址的字符串。
- 后者创建的字符串是运行时创建出来的,存储在运行时内存区(堆内存),不会放在常量池中,故而可以产生多个相同字符串存储起来, NSString* s1 = [NSString stringWithFormat:@”张三”]; NSString* s2 = [NSString stringWithFormat:@”张三”]; 这两个指针指向的不是同一个地址的字符串,用 == 比较会返回 false。
== 和 isEqual: 的区别:
均为判断两个实例值是否等价,若是指针需是指向同一地址。
但有时当两个实例存储的字符串内容相同时,即可判断为等价,这时就需要重写 isEqual: 方法,其实 NSString已经重写了 NSObject 的 isEqual: 方法 。
重写 isEqual: 方法应该满足一下条件:
- 自反性:[x isEqual x] 一定为真
- 对称性:[x isEqual y] 为真,则[y isEqual x] 也为真
- 传递性:[x isEqual y] 和 [y isEqual z] 为真,则 [x isEqual z] 也为真
- 一致性:如果x和y中用于等价比较的关键信息没有变动,那么无论比较多少次,[x isEqual y] 应该总是为真/假
- 对于任何不是 nil 的 x ,[x isEqual nil] 一定为假
重写 isEqual: 方法示例:
//其余代码忽略,以 idStr 作为判断等价的关键属性- (BOOL) isEqual: (id) other{ //如果两个对象为同一对象,则一定为真 if(self == other) return YES; //当 other 不为 nil ,且与self为同类型实例时,进行判断 if(other !+ nil && [other isMemberOfClass: MyUser.class]) { MyUser* target = (MyUser*) other; //返回两者的 idStr 值是否一致的判断结果 return [self.idSt isEqual: target.idStr]; } return NO;}
PS: NSString 中不仅重写了 isEqual: 方法,还地ing一了一个isEqualToString: 方法来判断当前值域另一个字符序列是否等价。
0 0
- 面向对象5
- 面向对象基础5
- 面向对象5
- JavaScript(5) 面向对象
- java面向对象5
- 1.2.5 面向对象
- 面向对象5
- 面向对象5
- 面向对象(5)
- Python 5、面向对象
- 面向对象5---多态
- 面向对象5
- C++面向对象(5)
- 面向对象理论(5)-Polymorphism
- 面向对象学习记录5
- php面向对象详解5
- 面向对象5大基本原则
- php基础5---面向对象
- 网络下载-HttpClient
- Android问题集(八)——
- 简单的音乐播放器
- 网络下载-AsyncHttpClient
- POJ 3267 The Cow Lexicon(DP单词匹配)
- 面向对象5
- 深入理解Angular指令
- 转:Spring 资源访问剖析和策略模式应用
- myUtils-多线程下载
- 【quick】quick-cocos2d-x导入sproto并重新编译player
- 网络下载-断点续传原理
- ZOJ-3203-Light Bulb【6th浙江省赛】【数学公式】【三分】
- 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别
- 支付宝集成