20.格式化创建字符串
NSString *imageName = [NSString stringWithFormat:@"xxxxxx%02d.jpg",i];
21.字符串长度
在OC里面,中英文都是一个字符。
NSString *str1 = @"hahahahaha";
NSUInteger len = [str1 length];
NSLog(@"length is %ld",len); //len = 10;
NSString *str2 = @"哈哈哈";
NSUInteger len2 = [str2 length];
NSLog(@"length is %ld",len2); //len2 = 3;
22.类方法
Objective-C中的类可以声明两种类型的方法:实例方法和类方法。
①简述
实例方法就是一个方法,它在类的一个具体实例的范围内执行。也就是说,在你调用一个实例方法前,你必须首先创建类的一个实例。
而类方法,不用创建实例使用。
+ 表示类方法,就是类调用方法,不依赖与任何对象的方法。
- 表示实例(对象)方法,只能时对象可调用,依赖与任何对象的方法。
②使用
[类名 类方法名];
③注意事项
1)类方法名可以和实例方法名重名;
2)在类方法里使用了self,这个self执行的类对象class object而不是实例对象instance object;
3)类方法中可以调用其他类方法,可以直接使用本类名(或者其他类名)调用类方法;
④优点:
1)节省内存空间;
2)提高了效率;
3)作为工具方法;
⑤易犯错误:
1)在类方法中使用了类的成员变量;
2)类方法不可以调用自身,会造成死循环;
⑥应用场景
如果我们调用了一个方法,该方法中不需要使用成员变量,那么我们可以将该方法声明为类方法。
23.匿名类
使用:[car new];
[[car alloc] init]; //等价于[car new]; 但这样把内存和吃实话工作分开,这样更加灵活,可以自行初始化对象的成员变量值
①使用匿名类访问实例变量,能访问,但是只能访问一次,以后再访问,实际上是访问新的空间
②使用匿名的类,可以调用方法。
③优缺点
1)优点:可以简化代码,方便方法调用
2)缺点:匿名对象实例化以后,只能正确的使用成员变量一次
24.封装
封装的步骤
①seter方法(设置器)
1)为外界提供一个设置成员变量值的方法。
2)命名规范:1.方法名必须以set开头; 2.Set后面跟上成员变量的名称,首地址大写; 3.返回值一定时void; 4.一定要接受一个参数,而且参数类型需要和成员变量的类型一致; 5.形参名不能和成员变量名一样(苹果官方推荐成员变量名前加_以示区分);
②getter方法(访问器)
1)get方法的作用:为调用者返回对象内部的成员变量
2)命名规范:1.一定有返回值,返回值的类型和成员变量的类型一致; 2.方法名和成员变量名一样; 3.不需要接收任何参数
25.依赖关系
A对象作为B对象的局部变量或是方法形参的,B依赖于A,这时候我们称A与B之间存在一种依赖关
系。
面向对象设计中:
耦合度:当修改一个对象的时候,对另外一个对象的影响程度;
低耦合:当修改一个对象的对其他对象影响比较小;
高内聚:一个对象仅仅做自己相关的事情;
面向对象设计原则:单一职责原则;
26.关联关系
关联关系哦,HasA关系:当一个对象拥有另一个对象的时候,当B对象为A对象的成员变量的时候,B对象与A对象之间存在一种关联关系。
关联关系时面向对象中最常用的一种关系。
关联关系的耦合度要高于依赖关系。
27.方法重载
概念:方法重载时指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
但是OC中没有方法重载。OC没有严格的方法重载,在OC中,方法名不允许相同。
28.static
在变量声明前加上关键字static,可以使用局部变量保留多次调用一个方法所得的值。
变量为静态变量,位于程序的全局数据区。
若作全局变量,可将声明放在实现文件的开始部分。
①使用误区:
1)使用static修饰实例变量是不被允许的;
2)使用static修饰了方法,也是错误的;