zoukankan      html  css  js  c++  java
  • 「OC」@property @synthesize和id

     

    一、@property @synthesize关键字

      这两个关键字是编译器特性,让Xcode可以自动生成getter和setter。

    (一)@property 关键字

      @property 关键字可以自动生成某个成员变量的setter和getter的声明

      如:@property int age;

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

      - (void)setAge:(int)age;

      - (int)age;

    (二)@synthesize关键字

      @synthesize关键字帮助生成成员变量的setter和getter方法的实现。

      如:@synthesize age=_age;

      相当于下面的代码:

      - (void)setAge:(int)age

      {

        _age=age;

      }

      - (int)age

      {

        return _age;

      } 

    (三)关键字的使用和注意

      类的声明部分:

       

      类的实现部分:

       

      测试程序:

       

      新版本中:

      类的声明部分:

       

      类的实现部分:

       

      测试程序:

       

      (1)在老式的代码中,@property只能写在@interface  @end中,@synthesize只能写在@implementation   @end中,自从xcode 4.4后,@property就独揽了@property和@synthesize的功能。

      (2)@property int age;这句话完成了3个功能:

        1)生成_age成员变量的get和set方法的声明;

        2)生成_age成员变量set和get方法的实现;

        3)生成一个_age的成员变量。

        注意:这种方式生成的成员变量是private的。

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

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

      (5)手动实现:

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

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

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

    二、id

      id 是一种类型,万能指针,能够指向操作任何的对象。

      注意:在id的定义中,已经包好了*号。Id指针只能指向os的对象。

      id 类型的定义

        Typedef struct objc object

        {

          class isa;

        } *id;

      局限性:调用一个不存在的方法,编译器会马上报错。

  • 相关阅读:
    QSet使用及Qt自定义类型使用QHash等算法
    QQueue与QStack使用
    QHash和QMultiHash使用
    【洛谷6633】[ZJOI2020] 抽卡(多项式毒瘤题)
    【洛谷5996】[PA2014] Muzeum(模拟费用流)
    【CF1063F】String Journey(后缀自动机+线段树)
    【BZOJ3640】JC的小苹果(高斯消元)
    【洛谷6478】[NOI Online #2 提高组] 游戏(树形DP+二项式反演)
    【洛谷6730】[WC2020] 猜数游戏(数论)
    【洛谷6186】[NOI Online #1 提高组] 冒泡排序(树状数组)
  • 原文地址:https://www.cnblogs.com/xiaodong208/p/4253160.html
Copyright © 2011-2022 走看看