• 「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;

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

  • 相关阅读:
    mysql主从备份案例—读写分离(异步主从)
    MySQL 汉化+完全备份操作实例
    Linux指令和shell脚本
    文件压缩和打包
    文件系统格式化和挂载
    linux常用指令和一些选项的汇总
    linux文件权限和群组
    [windows][技巧]百度网盘提示您的电脑已安装百度网盘,是否覆盖,解决方法
    [html][js]视频倍速播放功能
    [julia][学习笔记]julia的安装
  • 原文地址:https://www.cnblogs.com/xiaodong208/p/4253160.html
Copyright © 2020-2023  润新知