zoukankan      html  css  js  c++  java
  • OC基础:属性.点语法.KVC 分类: ios学习 OC 2015-06-24 17:24 61人阅读 评论(0) 收藏

    属性:快速生成setter和getter

    属性也包括:声明和实现

    1.属性的声明写在.h中

    格式:@property 数据类型 变量名;

    如果实例变量一致的时候,属性的声明可以合并,每一个属性之间使用,分隔

    2属性的实现写在.m中

    格式:@synthesize 数据类型 变量名;

    Xcode5.0之后,属性的实现部分也不需要写了

    当你同时重写settergetter,系统就不会再自动生成@synthesize name=_name;




    属性的优化

    1.声明的时候同一种数据类型可以合并

    2.实例变量可以省略(系统自动添加)

    3.属性的实现可以省略

    --------------------------------------------------------------------------------------------------------

    属性的属性(默认是readwrite)

    写在.h文件@property后的()中   如:@property(属性)

    读写组:

    用来控制setter和getter的实现

    readwrite  可读可写  自动生成setter和getter

    readonly  只读  自动生成getter


    重名组:

    用来为setter和getter重命名

    setter为set方法重命名     setter=方法名

    getter为get方法重命名     getter=方法名

    //重写set方法的方法名时,要加:

    //如果一个属性是BOOL类型,要对getter方法重命名




    原子性(默认atomic):

    atomic:原子性,同一时刻时,只能使用setter或者getter(只能用其一),单线程比较安全,但效率比较低

    nonatamic:非原子性,多线程不安全,但效率高

    //当你重写setter和getter时,需要把原子修饰符改为nonatomic


    内存管理组(默认是assign)

    assign默认,操作非对象类型(基本数据类型)

    retain 操作对象类型

    copy 操作对象类型,对象要遵循NSCopying

    //NSString 属性一般使用copy



    点语法   .

    如:

    girl.name=@"黄图哥';  //等于[girl setName=@"黄图哥"];

    girl.name;   //相当于[girl name];

    当.语法后面跟着=,相当于setter

    当.语法后面什么都没有跟,相当与getter

    注意:只有当实例变量拥有setter和getter时,才能使用.语法

    --------------------------------------------------------------------------------

    KVC 

    key-value-coding 键值编码,使用间接访问实例变量的方法

    使用KVC访问 name

    通过KVC中key去类中找实例变量,先判断有没有实例变量name,如果没有再去找_name,有就访问即可.

    即使实例变量没有setter和getter,也能通过KVC为实例变量赋值和取值.

    为了避免通过KVC编码的赋值和取值因为没有key值(不存在实例变量),出现程序奔溃(crash),需要在所在类的.m文件中,重写setValue和valueForUndefinedKey

    使用:

    [对象名 setValue:(id)  forKey:(NSString *)]

     [对象名 valueForKey:(NSString *)];



    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    CloudFlare防护下的破绽:寻找真实IP的几条途径
    用Log Parser Studio分析IIS日志
    Log Parser 2.2 + Log Parser Lizard GUI 分析IIS日志示例
    wordPress Development
    MyISAM 与 InnoDB 的区别
    ubuntu安装wiz笔记
    chown命令
    (转载)我们工作到底为了什么
    DS_Store 是什么文件
    Linux命令 ,在当前目录下查找一个,或者多个文件
  • 原文地址:https://www.cnblogs.com/shaoting/p/4619814.html
Copyright © 2011-2022 走看看