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

  • 相关阅读:
    jQuery工具函数
    jqXHR对象
    跨域获取
    Ajax :六个全局事件
    表单序列化
    Ajax : $. get()和$.post() $.getScript $.getJSON
    Ajax : load()
    列队动画
    关于MindManager显示不同级别的控制
    Mybatis 查询传多个参数(3中方法)
  • 原文地址:https://www.cnblogs.com/IDRI/p/4953524.html
Copyright © 2011-2022 走看看