zoukankan      html  css  js  c++  java
  • 08-Objective-C特有语法:@property、@synthesize

    1.@property

    • 使用在@interface中
    • 用来自动生成setter(设置器)和getter(构造器)的声明  
    • 用@property  int age;就可以代替一下这些代码: 
    - (void)setAge:(int)age;   // setter
    - (int)age;                // getter
    • 示例:

      


    2.@synthesize

    • 使用于@implementation中 
    • 用来自动生成setter(设置器)和getter(构造器)的实现 
    • 用@synthesize age = _age就可以代替下面这些代码:
    - (void)setAge:(int)age
    {
        _age = age;
    }
    - (int)age
    {
        return _age;
    }
    • 示例:

     

    • 如果成员变量_age不存在,就会自动生成一个@private私有的变量_age(因为_age声明在@implementation中,故为私有的)
    • 如果为@synthesize age; 此时为指明要去实现哪个age,如果.h文件中又声明一个同名的age成员变量,就会去实现它的setter和getter,否则,在@implementation中自动生成一个age变量,再实现age的setter和getter方法
    • 如果手动实现了setter方法,编译器就会自动实现getter方法
    • 同理,若手动实现了getter方法,编译就会自动实现setter方法
    • 若setter和getter都同时实现了,那么编译器就不会自动生成不存在的成员变量

    3.Xcode4.4以后:特性

    • @property囊括了@synthesize的功能,即在@interface中声明@propery int age; 编译器就在.h文件中自动生成了setter和getter方法声明和实现

             默认情况下是去访问下划线_age的成员变量

    • 此时,@proterty自动生成的成员变量默认就是@protect受保护的(因为在.h文件中声明的成员变量,默认是@protect)
    我就是我 是颜色不一样的烟火 天空开阔 要做最坚强的泡沫 我喜欢我 让蔷薇开出一种结果 孤独的沙漠里 一样盛放的赤裸裸
  • 相关阅读:
    Ubuntu1804 安装 cuda 、cudnn、TensorRT
    sudo apt install nvinfer*
    PyTorch for Jetson Nano
    Jetson Nano安装 Jupyter lab
    docker容器登录,退出等操作命令
    pyenv和pipenv简单使用
    pyenv使用国内镜像安装指定的Python版本
    python写入csv文件的几种方法总结
    Python 能做什么?
    极验滑块验证的使用
  • 原文地址:https://www.cnblogs.com/lszwhb/p/3692981.html
Copyright © 2011-2022 走看看