zoukankan      html  css  js  c++  java
  • 第6条: 理解“属性”这一概念

    通过对象来存储并传递数据,

    在对象之间传递数据并执行任务的过程称为“消息传递”

    OC对象会把其所需要的数据保存为实例变量并通过“存取方法”来访问。这称为属性

    @dynamic  

      告诉编译器:不要自动创建实现属性所用的实例变量,也不要为其创建存取方法。这样在编译时虽然发现没有定义存取方法也不会报错,相信在运行期能找到。

      例:CoreData 框架中的NSManagedObject类的子类时,用了这个关键字,说明数据是在运行时创建存取方法的。

    属性特质:4类

      原子性:nonatomic,非原子的, 不使用同步锁。这并不能保存线程安全。

      非原子性:使用同步锁开销较大,所以iOS程序几乎不用。但在Mac OS X程序时,对性能没什么影响。

      读写、只读:readwrite, readonly(没有setter方法)

      内存管理语义:

        assign, strong(先保留新值,并释放旧值,再赋新值), weak(既不保留新值,也不翻放旧值,类似assign,安全), unsafe_unretained(类似assign,与weak的区别:不安全), copy(与strong类似,避免可变发生,例如:字符串NSString,因为值可能来自子类NSMutableString,可能被更改,所以用copy)

      

    方法名设置别名:例:@property(nonatomic, getter = isOn) BOOL on;

    在设置属性所对应的实例变量时,一定要遵从该属性所声明的语义

      例: init方法中 

        -(id)initWithFirstName:(NSString*)firstName lastName:(NSString*)lastName {

          if(self = [super init]) {

            _firstName = [firstName copy];

            _lastName = [lastName copy];

          }

          return self;

        }

      

  • 相关阅读:
    Spring Boot与Redis的集成
    Spring Boot 使用YAML配置
    Spring Boot与MyBatis的集成
    springboot 初识
    微服务架构
    Spring MVC 国际化
    Spring MVC 为控制器添加通知与处理异常
    Spring MVC 数据转换和格式化
    Spring MVC 上传文件
    Spring MVC 实例:Excel视图的使用
  • 原文地址:https://www.cnblogs.com/Pikdays/p/4117855.html
Copyright © 2011-2022 走看看