• Objective


    在前面我们利用了@property来简洁内存管理的代码, 但里面涉及到一些参数有很多人都不明白, 现在我们来一起看看~~


    1.set方法内存管理相关的参数

    * retain : release旧值,retain新值(适用于OC对象类型)

    * assign : 直接赋值(默认,适用于非OC对象类型, 也就是基本数据类型)

    * copy   : release旧值,copy新值

     

    2.是否要生成set方法

    * readwrite : 同时生成settergetter的声明、实现(默认)

    * readonly  : 只会生成getter的声明、实现

     

    3.多线程管理

    * nonatomic : 性能高 (暂时先不用理会, 一般就用这个)

    * atomic    : 性能低(默认, 一般都不用)

     

    4.settergetter方法的名称

    * setter : 决定了set方法的名称,一定要有个冒号 :

    * getter : 决定了get方法的名称(一般用在BOOL类型)



    例子:

    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    
    
    // 返回BOOL类型的方法名一般以is开头
    @property (getter = isRich) BOOL rich;
    
    //   
    @property (nonatomic, assign, readwrite) int weight;
    // setWeight:
    // weight
    
    // 
    @property (readwrite, assign) int height;
    
    @property (nonatomic, assign) int age;
    
    @property (retain) NSString *name;
    @end
    


    对于settergetter方法, 可以使用@property来进行更改名称, 比如:

    @property (setter = abcd:, getter = ABCD)int age;

    那我们调用的时候就不用再写setAge, 或者直接age这样子了, 直接调用我们更改好的方法名, 但一般人不会这么去修改, 除非是非常必要, 否则直接写原来的setAge方法更加的直观.



    但有一个例子比较特殊, 就是上面例子里所写的BOOL类型, 在前面, 我们知道了BOOL类型的方法名最好是以is开头, 当然,setter方法我们不用改, 改的是getter方法, 改成以is开头, 这样子看起来比较顺眼, 而且代码也很规范.





    PS: 但是有一个注意点, 在@property() 的括号中, 声明参数不能冲突, 一旦冲突就会引起报错.






    好了, 这次我们就讲到之类, 下次我们继续~~~

  • 相关阅读:
    2 爬虫 requests模块
    http协议
    JAVA提高篇
    Java三大特性(封装、继承、多态)
    JavaScript对json对象数组排序(按照某个属性升降序排列)
    js中的闭包
    Java WebService 简单实例
    Quartz 入门详解
    web弹框/层 (layer )的使用
    Shiro
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4282824.html
Copyright © 2020-2023  润新知