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方法中的实现,会去访问下划线_开头的成员变量

  • 相关阅读:
    暑假学习日记2013/7/20
    java二维码之利用谷歌的zxing生成二维码,解析二维码
    数组去重
    MVC VS2012 Code First 数据库迁移教程
    WIN8 MTK驱动不能安装解决办法
    洛谷 P1943 LocalMaxima_NOI导刊2009提高(1)
    BZOJ 1572 USACO 2009 Open 工作安排
    BZOJ 1724 USACO 2006 Nov. 切割木板
    BZOJ 1666 USACO 2006 Oct. 奶牛的数字游戏
    BZOJ 4094 USACO 2013 Dec. Optimal Milking
  • 原文地址:https://www.cnblogs.com/IDRI/p/4953524.html
Copyright © 2011-2022 走看看