对象作为返回值 、属性 异常处理 NSString的常用方法

来源:互联网 发布:犀牛软件分割模型 编辑:程序博客网 时间:2024/06/18 14:18

OC基础day03

* 对象作为方法的返回值*

  • 买狗
    - (Dog *)buyDog;
    在OC中 目前只有NSString * 和 对象需要 类名* 类名对象
  • 对象作为方法的返回值的时候 ,本质并不是返回对象的本身,而是返回这个对象在堆区中的地址

* 类的属性个方法*
- 注意点1:
- 一个Target中无法使用 另一个 Target的中已经定义的类
- 什么是类: 用来描述具有相同特征和共同行为的一类事物
- 类的属性 : 就是这个类 拥有的东西
- 类的方法 : 就是这个类 具有的行为/能力

对象做为类的属性
- [类名 new]在内存中干的几件事
- 在堆区中开辟存储空间
- 给成员变量挨个的初始化
- 返回对象在堆区中的首地址
- 如果A的对象中拥有B的对象
- B的对象作为A的成员变量

@interface B : NSObject{    B *b;}@end
  • 那么在执行 A*aa = [a new]会不会创建B对象呢?
    • 不会自动创建B对象 只会与一个指针初始化值是nil
    • 在创建一个B对象 B *bb = [B new];
    • 让A对象拥有B对象
    • a->b = bb;

异常处理

@try    {       //在执行 过程中可能出错的代码    }    @catch(NSException * exc)    {        //如果上面的代码出现异常 就会执行这里的代码        //所以这里一般写 处理异常的代码    }    @finally    {        //无论@try中有没有发生异常,这里的代码都会执行    }

类的基本使用

  • 什么是类方法
    • 以 + 号开头的方法
  • 类方法的格式
      • (返回值类型)方法名;
  • 类方法如何调用
    • 用 类名直接调用
    • [类名 类方法名];
  • 类方法的注意事项:
    • 在类方法中不能直接访问 类的属性
    • 在类方法中不能直接调用其他对象的方法
  • 什么是有使用
    • 当写一个方法 发现这个方法没有用到属性 也没有调用其他对象方法 就可以使用
  • 使用类方法需要注意的问题
  • 同一个类的两个对象方法不能同名 ,两个类方法也不能同名
    • 但是类方法和对象方法可以重名
    • 编译器会根据 调用者不同 来判断调用具体应该调用哪一个
  • 对象方法只能通过对象调用 类方法只能通过类名调用

  • 总结 :

    • 只要有对象 那么就通过这个对像调用对象方法
    • 只要有类名 那么就可以通过这个类名调用方法

类方法的规范

  • 苹果官方的规范
    • 写一个类,就要为这个类提供一个和这个类同名的类方法
    • 在这个类方法内创建一当前类的纯洁的对象并返回出去
  • 此时,在外界想创建类对象有两个方法
    • 一个是用类名 new 方法
    • 一个是通过类名调用当前类同名的方法
  • new其实是一个类方法
  • new方法是一个类方法 [类名 new];
    • 在内存中做了三件事
      • 开辟存储空间 堆中
      • 初始化成员变量
      • 返回在堆区地址
  • NSString的本质是一个类
  • 完整的创建对象的方式
NSString *str1 = [NSString new];NSString *str2 = [NSString string];
  • 快速创建对象的方法
    • NSString *str2 = @”字符串内存”;
  • 所以可以有两种方式打印字符串对象
    • 可以用%p打印, 打印的是字符串的首地址
    • 可以用%@打印 这个地址中的内存 也就是字符串的内容

NSString常用方法

  • 通过指定一个C字符串 创建一个OC字符串对象
  • NSSting *str1 = [NSString stringWithUTF8String:C语言字符串];

  • 创建一个拼接后字符串 字符串拼接

  • NSString *str2 = [NSString stringWitnFormat:@”格式控制符”,常量/变量];
    -
  • 获取字符串长度 不管中文英文都是一个长度
  • NSUIteger len = 指向字符串的指针.length;
    -
  • 获取字符串中的指定下标的字符
  • unichar c = [指向字符串的指针 characterAtIndex:0或者正整数];
    • 注意:
    • 中文字符 OC 中 占两个字节
    • C占 三个字节
    • 打印 unichar 使用 %c
  • 判断两个字符串的内容的大小关系
  • int result = [指向字符串的指针 compare:指向字符串的指针2];
    -
  • 判断两个字符串的内容是否相等
  • BOOL result2 = [指向字符串的指针 isEqualToString:指向字符串的指针2];
0 0
原创粉丝点击