• 2015.12.18 property定义属性变量 init初始化自定义 class的部分运用


    property 

      在之前的学习和运用当中,由于成员变量默认都是私有的(private),所以定义一个变量的时候都会手写出一段『getter』和『setter』的代码。但是由于这样写太麻烦了,所以引入了property(声明)和synthesize(实现)。而到了后来,synthesize也被省略掉了。

        eg:  @property (nonatomicstrong)NSString *name;

        这里,『property』帮我们完成了三个任务:1.声明了一个属性变量

                             2.声明了setter、getter方法

                             3.实现了setter、getter方法

      property中的关键字的:    

        atomic  原子操作 线程安全 有枷锁解锁机制 安全  (默认)

        nonatomic 非原子操作 线程不安全 速度快 效率高  (一般使用)

        strong  声明一个非自己创建的对象的所有权

            如果创建所有权之后 放弃只会放弃所有权,而不会释放内存 所有的都放弃所有权之后 系统会自动释放内存

            防止A创建物体后B使用,A放弃了之后,B就再也找不到了这种情况。

        retain  和strong一样

        weak  只使用而不产生所有权

        copy  重新复制对象 好处在于和原来的对象脱离了关系不受其影响 坏处在于内存加大了

            与Strong的区别就是是否脱离出来

        assign  对于C语言的基本数据类型用assign

        readonly  只读 相当于只提供getter方法

        readwrite  读写 默认


    init 

      init自定义个目的相当于构造方法,有的时候初始化的时候有一些默认值,还有就是页面加载数据的时机问题,防止加载了页面再填数据(不同步)。

        eg:

    -(instancetype)initWithName:(NSString *)aName andage:(int)aAge{
    
                if (self =[super init]) {       //调用父类方法init 并且判断是否初始化成功
    
                    self.name = aName;
    
                    self.age = aAge;
    
                }
    
                return self;
    
            }

      自定义的时候可以有三种返回类型使用意义相同

        -(Person *)initWithName

        -(id)initWithName     //id是identify的缩写,某种程度上相当于void

        -(instancetype)initWithName      //是NSObject中init的类型,推荐使用 


    class 

      @class 类名;——解决循环引用问题,提高性能

      @class仅仅告诉编译器,在进行编译的时候把后面的名字作为一个类来处理。

      (1)@class的作用:声明一个类,告诉编译器某个名称是一个类

      (2)开发中引用一个类的规范

        1)在.h文件中使用@class来声明类

        2)在.m文件中真正要使用到的时候,使用#import来包含类中的所有东西

      P.S.例如钥匙类中会包含锁,锁中又包含钥匙。相互#import会出错  因为一直互相引用

  • 相关阅读:
    用友U8 | 【出纳管理】出纳日记账生成的凭证如何删除?
    转载--如何为chart上的点添加标注
    转载--跨域请求CORS和jsonp
    转载--闭包的使用场景
    转载--闭包的优缺点
    转载--对称加密与非对称加密
    转载--XSS漏洞原理和利用
    转载--强缓存与协商缓存
    转载--CSS常见布局
    转载--透过浏览器看HTTP缓存
  • 原文地址:https://www.cnblogs.com/immustard/p/5063390.html
Copyright © 2020-2023  润新知