我学习Object-C中的收获总结(五)(六)

本文介绍Objective-C中的类继承概念及遍历构造器的使用,详细讲解了不可变字符串(NSString)与可变字符串(NMUTString)的区别及常见操作方法,如拼接、替换、查询和分段等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(五)

类的继承能够大大简化代码,公共的方法与实例变量写在父类里,子类只写自己特有的。并且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是将基本数据类型封装为对象,用来为基本数据类型和数据对象之间转换服务。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值