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

  • 相关阅读:
    MyBatis入门
    Java JDBC
    Spring MVC
    Java内存模型
    Java日志
    Java I/O模型
    Java异常处理
    Java泛型设计
    Java反射
    Java代理
  • 原文地址:https://www.cnblogs.com/IDRI/p/4953524.html
Copyright © 2011-2022 走看看