• Object-c基础(2)


    类和对象

    在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 出错 赋值时建立传入值的一份副本 赋值时建立传入值的一份副本
  • 相关阅读:
    ssh中Hibernate懒加载,session问题的学习与理解
    ligerUI---ListBox(列表框可移动)
    ligerUI---下拉菜单(menubar)动态显示(从后台获取数据)
    ligerUI---下拉框(Combobox)
    ligerUI---ligerGrid中treegrid(表格树)的使用
    Hibernate--使用xml配置映射关系
    Hibernate--使用注解配置映射关系
    ligerUI---ligerGrid默认选中checkbox
    ligerUI---ligerGrid分页排序的使用(从后台获取数据显示)
    手机屏幕尺寸与iOS开发坐标的关系
  • 原文地址:https://www.cnblogs.com/evansyang/p/5248760.html
Copyright © 2020-2023  润新知