zoukankan      html  css  js  c++  java
  • OC中点语法、property跟synthesize用法

    一:OC中得点语法

    1> 点语法的基本使用:
    ·使用 对象.成员变量   可以实现设置成员变量值,和获取成员变量的值
     
    2> 点语法的本质 (点语法是Xcode编译器自己帮我们完成的一个功能)
         实际上点语法就是set和get方法,当编译遇到点语法时,编译器就会将点语法转成set和get方法。
    注意:也就是说,如果类中没有实现set和get方法,那么就不会有点语法
     
    p.name = @“”; 实际上就是 [p setName:@“”];
     
    在OC中访问成员变量只有一种方式即使用-> 如stu->age,这种情况要求在@public的前提下。
     
    3> 点语法的注意点
    下面的使用方式是一个死循环:

    (1)在set方法中,self.age=age;相当于是[self setAge:age];

    (2)在get方法中,return self.age;相当于是[self age];
    也就是说,在set和get方法中不能使用(self点成员变量)造成死循环
    当然了如果访问成员变量的话可以使用_成员变量。
     
    例子:
    - (void)setAge:(int)age
     {
         _age = age;// 不能写成self.age = newAge,相当与 [self setAge:newAge]; }
        self.age = age (错误,死循环)
     }
     
    二:property和synthesize关键字的使用
    注意:这两个关键字是编译器特性,让xcode可以自动生成getter和setter的声明和实现。
    1)@propery int age;   在4.4之前是帮我们声明age的get和set方法

      编译时遇到这一行,则自动扩展成下面两句:

      - (void)setAge:(int)age;

      - (int)age;

     

    2)@synthesize age;     在4.4之前,帮我们实现get和set方法

        .m文件中帮我们生成一个私有的变量age

                .m中的变量是不能够被继承的

    @synthesize age = _age; 表示 get 和set方法 指定设置_age的值

    当然了4.4之前我们需要声明(_成员变量)

    3@property int age;

        在xcode4.4之后

        1)声明age的get和set方法

        2)实现age的get和set方法

               3)生成一个_age(.h声明) (我们不用单独声明(_成员变量)

    注意:

      1,这种方式生成的成员变量是private的。(因此在后面我们在子类或者外部通过点语法也就是get和set方法来访问@property修饰的成员变量)

      2,可以通过在{}中加上int _age;显示的声明_age为protected的。

      3,原则:get和set方法同变量一样,如果你自己定义了,那么就使用你已经定义的,如果没有定义,那么就自动生成一个。

      4,手动实现:

    1)如果手动实现了set方法,那么编译器就只生成get方法和成员变量;

    2)如果手动实现了get方法,那么编译器就只生成set方法和成员变量;

    3)如果set和get方法都是手动实现的,那么编译器将不会生成成员变量。

    5,在@property中readonly修饰的成员变量只有get方法,也就是只有取值不能改值,

    目前遇到一个问题,readonly修饰的NSString成员属性,.m中可以通过(_成员变量)但是UI控件的话,.m中不能访问(_成员变量)

     
     
     
  • 相关阅读:
    SGU 495 Kids and Prizes 概率DP 或 数学推理
    poj 2799 IP Networks 模拟 位运算
    uva 202 Repeating Decimals 模拟
    poj 3158 Kickdown 字符串匹配?
    uva 1595 Symmetry 暴力
    uva 201 Squares 暴力
    uva 1594 Ducci Sequence 哈希
    uva 1368 DNA Consensus String 字符串
    数字、字符串、列表的常用操作
    if条件判断 流程控制
  • 原文地址:https://www.cnblogs.com/-boy/p/4074718.html
Copyright © 2011-2022 走看看