//***************** NSString 类介绍及用法
1)创建常量字符串,注意使用“@“符号。
NSString *astring = @"This is a String!";
2)创建空字符串,给予赋值。
NSString *astring = [NSString new];
astring = @"Hello world!";
3)格式化创建字符串(按照指定的格式创建字符串)
int i=1;
NSString *imgName = [NSString stringWithFormat:@"xxxxxx%02d.jpg",i];
4)用一个已经存在的字符串创建一个新的字符串
NSString *s1 = @"This is a String!";
NSString *s2 = [[NSString alloc] initWithString:s1];
NSLog(@"s2 = %@",s2);
//****例子:
int i=1;
float j=2.2f;
NSString *astring = [[NSString alloc] initWithString:[NSString stringWithFormat:@"%02d.THis is %f string",i,j]];
NSLog(@"astring:%@",astring);
//NSString 字符串长度计算方法
通过调用NSString类的对象方法 length 可以获得字符串的长度
// 1)纯英文字符
NSString *str1 =@"it cast!";
NSLog(@"str1 length:%ld",[str1 length]); 8
//2)中英文混合
NSString *str2 =@"传智cast";
NSLog(@"str1 length:%ld",[str2 length]);6
//3)纯中文
NSString *str3 =@"传智播客";
NSLog(@"str1 length:%ld",[str3 length]); 4
//OC字符串中 中英文都当作一个字符
char *str ="传智播客";
NSLog(@"str length:%ld",strlen(str)); 12
//注意: 在C语言中,每个汉字占用3个字节,可以使用strlen计算。
二. 多文件开发
1,为什么要使用多文件?
在开发当中实现的功能一般会比较复杂, 所以会将类分成声明(.h文件)和实现(.m文件)部分,
2,在.h文件中写成员变量和方法的声明, 在.m文件中写成员变量和方法的实现.
这样写大大提高开发效率, 提高代码的维护性.
//****************** 类方法概述及定义方法 ***********
三,类方法
一. 特点:
1. 以加号( + )开头,
2. 调用格式: [类名 方法名]
二. 注意事项:
1. 类方法可以和实例方法同名, 相互之间互不影响
2. 类方法可以从父类继承而来,子类可以重写类方法 // ,如description类方法
3. 类方法和实例方法一样在interface里声明, 在implementation里实现。
4. 类方法由类名调用, 实例方法由对象调用。
5. 在类方法里使用了self, self指代的是调用者类
6. 在类方法中不能使用类的成员变量
7. 类方法和对象方法之间不能使用self相互调用
总结self : 谁调用当前方法, self就代表谁
三. 类方法和对象方法的比较
1. 对象方法以减号开头, 可以使用成员变量
2. 类方法以加号开头,不能使用成员变量
3. 类方法使用场景
如果我们调用一个方法,该方法中不需要使用成员变量,那么我们可以将该方法声明为类方法
4. 匿名对象
匿名对象的使用场景: 当对象的方法只调用一次时,可以使用匿名对象来完成。
匿名对象优缺点 :
优点: 可以简化代码,方便方法调用;节省内存空间
缺点: 匿名对象实例化以后,只能使用一次
常见用法:
//下面两句的作用是等价的
Person *p = [[Person alloc] init];
Person *p1 = [Person new];
两者的区别:
alloc 和 init 分别把分配内存和初始化的工作分开。这样更加的灵活,可以自行初始化对象的 成员变量值
而不像new每次都初始化为0
new 是把分配内存和初始化的工作一起完成了,先分配内存,然后调用类的构造函数。
//************ 类方法易犯的错误 ****************
/*
self: 谁调用当前方法, self就代表谁
1. 类方法中可以调用类方法吗? // 可以, 通过类名, self来调用
2. 类方法中可以调用对象方法吗? // 可以, 通过参数传递对象
3. 对象方法中可以调用类方法吗? // 可以, 通过类名
4. 对象方法中可以调用对象方法吗?// 可以, 通过参数, self
注意点: 不管是类方法,还是对象方法, 都不能调用自己, 容易造成死循环
*/
//**************** 封装的概念及原理 ************
1.什么是封装:
封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
2. 封装的好处:
2.1 将变化隔离。(不管里面怎么变,使用者不需要知道)
2.2 便于使用。(使用者只需按照一定的方法使用就可以了)
2.3 提高重用性。(任何人都可以对已封装好的功能进行操作)
2.4 提高安全性。(由于暴露给使用者的只是一些外在的操作环节,而不是里面本质的东西,所以就提高了对他的维护性,也就是安全性)
3. 封装的原则:
3.1 将不需要对外提供的内容都隐藏起来。
3.2 把属性都隐藏,提供公共方法对其访问。
//封装的实现步骤
定义设置实例变量(setter)方法和访问实例变量(getter)的方法
//******************************************
4. setter方法的实现
set方法的书写规范:
1) set方法一定是一个对象方法
2) set方法一定不能有返回值
3) set方法必须以set开头
4) set之后跟的是实例变量去掉下划线,并且首字母大写
5)set方法一定有参数,而且参数的类型和实例变量的类型一致
6) set方法的形参名一般是 去掉下环线的实例变量名
7)形参名不能和 实例变量名同名
8) set方法实现中,一定要用形参给实例变量赋值
成员变量: int _age; 的setter方法
-(void)setAge:(int)age{
_age = age;
}
get方法书写规范:
1) get方法一定是一个对象方法
2) get方法一定有返回值,返回值的类型和实例变量的类型要一致
3) get方法的方法名 是去掉下环线的实例变量名
4) get方法一定没有参数
5) get方法的实现中,一定是返回实例变量值
成员变量: int _age; 的setter方法
-(int)age{
return _age;
}
组合模式:把具有相同基类类型的对象组合到树形结构中,以表示“部分-整体”的层次结构,使得用 户对单个对象和组合对象的使用具有一致性。
依赖关系:A对象作为B对象的局部变量或是方法形参的,B依赖与A,这时候我们称A与B之间存在一种依赖关系
B A
[p feedDog:dog];
关联关系,HasA关系:当一个对象拥有另外一个对象的时候, 当B对象为A对象的成员变量的时候,B对象与A对象之间存在一种关联关系
本文详细介绍了Objective-C中NSString类的使用方法,包括字符串的创建、格式化及长度计算等内容。同时,还深入探讨了类方法的特点、定义、注意事项及其与实例方法的区别。

1466

被折叠的 条评论
为什么被折叠?



