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;

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

  • 相关阅读:
    JavaScript打造很酷的图片放大效果实例代码
    【荐】CSS实现的鼠标点击小图无刷新放大图片代码
    JavaScript+CSS实现的文字幻灯切换代码
    【荐】很棒的图片友情链接带控制按钮的横向滚动代码
    jquery制作一个漂亮带渐隐效果的跑动区域
    JS打造的一款响应鼠标变化很炫的图片特效代码
    JS+CSS控制鼠标移上图片滑出文字提示代码
    Jquery+CSS实现的大气漂亮图片切换效果代码
    【荐】JS+CSS防FLASH效果带倒影的图片切换效果代码
    JavaScript限制对图片右键代码
  • 原文地址:https://www.cnblogs.com/xiaodong208/p/4253160.html
Copyright © 2011-2022 走看看