zoukankan      html  css  js  c++  java
  • OC- @property @synthesize

    @property

    1,在@interface中

    2,自动生成setter和getter的声明

    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    {
        int _age;
        // int age;
        
        int _height;
        
        double _weight;
        
        NSString *_name;
    }
    
    // @property:可以 自动生成某个成员变量的setter和getter声明
    @property int age;
    //- (void)setAge:(int)age;
    //- (int)age;
    
    
    @property int height;
    //- (void)setHeight:(int)height;
    //- (int)height;
    
    - (void)test;
    
    
    @property double weight;
    
    @property NSString *name;
    
    @end

    Person.m

    #import "Person.h"
    
    @implementation Person
    
    // @synthesize自动生成age的setter和getter实现,并且会访问_age这个成员变量
    @synthesize age = _age;
    
    @synthesize height = _height;
    
    @synthesize weight = _weight, name = _name;
    
    @end
    #import "Person.h"
    
    @implementation Person
    
    // @synthesize自动生成age的setter和getter实现,并且会访问_age这个成员变量
    @synthesize age = _age;
    
    @synthesize height = _height;
    
    @synthesize weight = _weight, name = _name;
    
    @end

    @property关键字

            自动生成某个成员变量的setter和getter方法的声明

            相当于 - (void)setAge:(int)age;

                - (int)age;

    @synthesize

    语法: @synthesize age = _age;

    相当于:

        - (void) setAge:(int)age

        {  

           _age = age;

        }

            - (int)age

        {

            return _age;

        }

     如果成员变量_age不存在,就会自动生成一个@private的成员变量_age

    若:@synthesize age;

      setter和getter实现中会访问成员变量age

      如果成员变量age不存在,就会自动生成一个@private的成员变量age

    手动实现:

      若手动实现了setter方法,编译器就只会自动生成getter方法

      若手动实现了getter方法,编译器就只会自动生成setter方法

      若同时手动实现了setter和getter方法,编译器就不会自动生成不存在的成员变量

    新特性:

      自从Xcode 4.x后, @property就独揽了@synthesize的功能

      默认情况下,setter和getter方法中的实现,会去访问下划线_开头的成员变量

  • 相关阅读:
    hdu6514 // 二维差分 二维前缀和 基本容斥 压维
    【模板】欧拉函数 & 欧拉筛
    并查集模板 hdu1703
    大数 gcd
    hdu1087 dp
    洛谷p1306 斐波那契公约数
    hdu6814 Tetrahedron 线性求逆元 + 快速幂求逆元
    hdu6867 Tree // DFS
    hdu6869 Slime and Stones // 威佐夫博弈&#183;改
    Python实现EXCEL表格的排序功能
  • 原文地址:https://www.cnblogs.com/IDRI/p/4953524.html
Copyright © 2011-2022 走看看