(五)
类的继承能够大大简化代码,公共的方法与实例变量写在父类里,子类只写自己特有的。并且OC里没有多继承,只能单继承。多级继承之后,执行方法时是现在本类中找,没有就在父类中找,逐级向上。
子类重写父类的方法了又想调用父类的这个方法,用super调用。例:[super 父类方法]
遍历构造器:它是一个加号方法,封装了alloc与init方法,更简洁了
.h文件:
{
NSString *_name;
}
+ (instancetype)personWithName:(NSString *)name;
- (instancetype)initWithName:(NSString *)name;
.m文件:
+ (instancetype)personWithName:(NSString *)name
{
Person *person = [[Personalloc] initWithName:name];
return person;
}
- (instancetype)initWithName:(NSString *)name
{
_name = name;
returnself;
}
main:// 便利构造器创建对象
Person *person = [PersonpersonWithName:@"递归"];
(六)
Foundation框架:包括了字符串,集合,日期,时间等基础类。
1.NSString与NSMutableString,不可变字符串与可变字符串
NSString创建出来的对象,内容与长度都不能变化。NSMutableString则可以任意变化。
其实NSMutableString是NSString的子类,继承了所有的方法。
经常用的方法是拼接,替换,比较,切割,分段等。
不可变字符串:
拼接:
NSString *string1 = [[NSString alloc] init];
string1 = @"张";
NSString *string2 = [[NSString alloc] init];
string2 = @"三";
NSString *string3 = [string1 stringByAppendingString:string2];
切割:
NSString *string = [content substringFromIndex:4];// 获得content字符串从下标为4的位置以后,所有的内容
NSString *string = [content substringToIndex:4];// 获得content字符串从0下标开始到第四下标开始的所有内容
NSString *string = [content substringWithRange:NSMakeRange(2, 3)];// 获得content字符串从第2个下标开始的一共长度为3的子串
NSString *string = [message stringByReplacingOccurrencesOfString:@"h" withString:@"pa"];// 遍历每个字符,用后面的替换前面的
查询:
NSString *string = @"6af6ds4xcv566l,6.jhl4fg4f6jhdf4ghd";
NSScanner *scanner = [NSScanner scannerWithString:string];// 查询的功能是找出数字
while (![scanner isAtEnd] && ++scanner.scanLocation)// 遍历找出数字
{
int result;
if ([scanner scanInt:&result]) {
NSLog(@"%d", result);
}
}
分段:
NSString *string = @"xiaohao,lewis,mouxiangyang";
NSArray *array = [string componentsSeparatedByString:@","];// 在遇到逗号时就开始分段
不可变字符串:
拼接:
NSMutableString *mutableString = [[NSMutableString alloc] init];
[mutableString appendString:@"张"];
[mutableString appendString:@"三"];
替换:
[mutableMessage replaceOccurrencesOfString:@":" withString:@"#" options:0 range:NSMakeRange(0, [mutableMessage length])];// 后面的字符替换前面的字符,range后标明的是从第一个字符到最后一个开始替换
2.数组(可变与不可变)
可变数组NSMutableArray继承于不可变数组NSArray,可变数组增删改的功能都是针对自己,产生新的数组,而不可变数组则每次变化都要有一个新的数组接受数据,原来的数组不变。
而且OC的数组里的元素类型随意,不如C那么死板。元素在数组中的索引值从0开始。
遍历时也可以像C的数组一样利用索引值用for循环遍历,后面也会有别的遍历方法。
NSNumber是将基本数据类型封装为对象,用来为基本数据类型和数据对象之间转换服务。