我学习Object-C中的收获总结(五)(六)
2015-10-24 15:11
459 查看
(五)
类的继承能够大大简化代码,公共的方法与实例变量写在父类里,子类只写自己特有的。并且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是将基本数据类型封装为对象,用来为基本数据类型和数据对象之间转换服务。
类的继承能够大大简化代码,公共的方法与实例变量写在父类里,子类只写自己特有的。并且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是将基本数据类型封装为对象,用来为基本数据类型和数据对象之间转换服务。
相关文章推荐
- 我学习Object-C中的收获总结(三)(四)
- Objective-C复合
- Objective-C学习—UITableView的使用
- windows下 Codeblocks 搭建 Objective-c 开发环境
- iOS的常见问题---Object-C有私有方法吗?私有变量呢?多重继承?
- Objective-c 之UIImage的基本使用
- 代理模式
- 浅谈 Objective-C 下对象的初始化
- OC第八天 — 属性, 属性的属性, 点语法, KVC
- Objective-C-类和对象
- Type mismatch: cannot convert from Enumeration<String> to Enumeration<Object>
- Object of class stdClass could not be converted to string
- 数据源和连接池DataSource Objects and Connection Pools
- Windows API 之 CreateThread、WaitForSingleObject(未完)
- [iOS]Objective-C利用协议实现回调函数(类似java的回调函数)
- 一键横屏--------纠结了好久
- 细数Objective-C中的回调机制
- 文献阅读笔记: Real-time Multiple Objects Tracking with Occlusion Handling in Dynamic Scenes ---by 香蕉麦乐迪
- swift:Optional Type 、Swift和Objective-C混编的讲解
- Object-C与Swift的混合编程