IOS学习第19天
类的对象与方法
- 对象作为方法的返回值
1.买狗
- (Dog *)buyDog;
在OC中 目前只有NSString * 和 对象需要 类名* 对象名
2.上帝造人
- (Person *)makeAPerson;
3.对象作为方法的返回值的时候 本质并不是返回对象的本身,而是返回这个对象在堆区中的地址
- 对象作为类的属性
1.回顾[类名 new]在内存中干的几件事
1>在堆区中开辟空间,存对象
2>给成员变量初始化a.基本数据类型0 b.OC指针nil c.C指针NULL
3>返回对象在堆区中的首地址给存在于栈区中的指针
2.如果 A的对象中拥有B的对象:
B的对象作为A的成员变量
@interface B : NSObject
@end
@interface A : NSObject
{
B * b;
}
@end
那么 执行 A* aa = [A new] 会不会创建对象B?
不会自动创建B对象,只会有一个指针 初始化值是nil
再创建一个B对象 B * bb = [B new];
"让A对象拥有B对象
aa->b = bb;
```
* 异常处理
- 处理异常:
@try
{
//在执行 过程中可能出错的代码
}
@catch(NSException * exc)
{
//如果上面的代码出现异常 就会执行这里的代码
//所以这里一般写 处理异常的代码
}
@finally
{
//无论@try中有没有发生异常,这里的代码都会执行
}
“`
类方法
- 类方法的基本使用
.什么是类方法
以 "+" 开头的方法
2.类方法的格式
+ (返回值类型)方法名;
3.类方法如何调用
用过 类名直接调用
[类名 类方法名];
4.类方法的注意事项:
1>在类方法中不能直接访问 类的属性
2>在类方法中不能直接调用其他的对象方法
5.什么时候用类方法?
当你写一个方法 发现 这个方法没有用到属性 也没有调用其他对象方法
那么这个方法 可以写成类方法
```
* **使用类方法需要注意的问题**
1.同一个类的两个对象方法不能同名,两个类方法也不能同名
“但是类方法和对象方法可以同名
编译器会根据 调用者不同 来判断具体应该调用那一个方法
2.对象方法只能通过对象调用,类方法只能通过类名调用
总结:无论在代码的哪里
只要有对象,那么就可以通过这个对象调用对象方法
只要有类名,那么就可以通过这个类名调用类方法
“`
- 类方法的规范
1.苹果官方的规范:
"写一个类,就要为这个类提供一个和这个类同名的类方法
在这个类方法内创建一个当前类的纯洁的对象并返回出去.
2.此时,在外界想创建一个对象有两种方式,一种是用类名调用new方法,另一种是通过类名调用和当前类同名的类方法
NSString的常用方法
//通过指定一个C字符串 创建一个OC字符串对象
NSString *str1 = [NSString stringWithUTF8String:C语言字符串];
//创建一个拼接后字符串
NSString *str2 = [NSString stringWithFormat:@"格式控制符",常量/变量];
//获取字符串的长度,不管中英文都是算1个长度
NSUInteger len = 指向字符串的指针.length;
//获取字符串中的指定下标的字符
unichar c = [指向字符串的指针 characterAtIndex:0或者正整数];
"注意:
中文字符 OC中 占两个字节
C中占 三个字节
打印 unichar字符 使用 %C
//判断两个字符串的内容的大小关系
int result = [指向字符串的指针 compare:指向字符串的指针2];
//判断两个字符串的内容是否相等
BOOL result2 = [指向字符串的指针 isEqualToString:指向字符串的指针2];