您的位置:首页 > 移动开发 > Objective-C

Object-c基础(2)

2016-03-06 22:02 411 查看

类和对象

在Object-c中类,其接口(interface)和实现(implementation)是分离开来的

  • 类的声明

    @interface 类名:父类名
    {
    实例变量的定义;
    }
    方法声明;
    ...
    @end
  • 类的实现

    @implementation 类名
    方法定义
    ...
    @end
对象

一个类提供对象的图纸,然后创建这个类的对象

类名 对象名=[[类名 alloc]init];

访问一个类的对象的属性可以直接使用访问成员运算符(.)

属性和变量

属性

属性(property)指在接口文件中声明实例对象到底有哪些属性

属性声明的一些规则总结如下:

  • 自动生成访问方法
  • 自动生成实例变量
  • 更简单地调用访问方法(使用点操作符(.)完成)
  • 属性的内省(introspection):通过内省可以动态地查询类中声明的属性以及属性的名称和类型
显示声明属性

让编译器自动生成与数据成员同名的方法

@property int hitPoint;

相当于自动声明了实例变量和读写方法,方便外部使用

属性的实现

使用@synthesize,让编译器自动生成setter和getter方法

@synthesize hitPoint;

synthesize还有一个作用就是可以指定与属性对应的实例变量,例如@synthesize myButton = xxx;那么self.myButton其实是操作的实例变量xxx,而不是_myButton了。

属性指定的选项

@property 可用的选项

  • 指定方法名(显式指定getter和setter方法名) getter=getter 方法名
  • setter=setter 方法名
  • 读写属性
      readonly(只读)
    • readwrite(读写)
  • 赋值时的选项
      assign(单纯赋值)
    • retain(进行保持操作)
    • unsafe_unretained(同assign一样(用于ARC))
    • strong(同retain一样(用于ARC))
    • weak(弱引用(用于ARC))
    • copy(复制对象)
  • 原子性操作
      nonatomic(非原子性操作、非线程安全)
    属性赋值时的选项

    我们可以为可读写的@property设置选项,选项共有6种:assign,retain,unsafe_unretained,strong,weak和copy。选项之间是排他关系,可以不设置任何选项或只设置6种种的一种。根据所修饰的属性是否是对象类型或者所采用的内存管理方式(手动计数,ARC)的不同,选项的意义也不同。

    如表所示:

    基础数据类型 手动引用计数 ARC
    未指定任何选项 直接赋值 警告 警告
    assign
    unsafe_unretained
    直接赋值 直接赋值 直接赋值
    retain
    strong
    出错 赋值并对新值进行retain操作 赋值并对新值进行retain操作
    weak 出错 无特别操作和assign相同 弱引用
    copy 出错 赋值时建立传入值的一份副本 赋值时建立传入值的一份副本
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: