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;

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

    如果一件事情你觉得难的完不成,你可以把它分为若干步,并不断寻找合适的方法。最后你发现你会是个超人。不要给自己找麻烦,但遇到麻烦绝不怕,更不要退缩。 电工查找电路不通点的最快方法是:分段诊断排除,快速定位。你有什么启示吗? 求知若饥,虚心若愚。 当你对一个事情掌控不足的时候,你需要做的就是“梳理”,并制定相应的规章制度,并使资源各司其职。
  • 相关阅读:
    如何从svn上down项目
    查看当前项目的svn地址
    项目启动失败
    新增sql后面可以跟where条件(多表关联新增数据和复制数据)
    递归思想之---斐波拉契数列
    递归思想之---阶乘算法
    java递归思想之---汉诺塔
    将 Docker 镜像体积减小 转载:https://mp.weixin.qq.com/s/kyK6652kchtudZHhSsYx_Q
    工具 转载 https://mp.weixin.qq.com/s/Y1RHEDu0vuH4qm9QtMISFg
    Kubernetes 学习笔记 权威指南第五&六章
  • 原文地址:https://www.cnblogs.com/wvqusrtg/p/4488168.html
Copyright © 2011-2022 走看看