zoukankan      html  css  js  c++  java
  • @property @synthesize的含义以及误区。

    @property的作用是定义属性,声明getter,setter方法。(注意:属性不是变量)
    @synthesize的作用是实现属性的,如getter,setter方法.

    在声明属性的情况下如果重写setter,getter,方法,就需要把未识别的变量在@synthesize中定义,把属性的存取方法作用于变量。如:

    .h文件中

    @property (nonatomic,assign)NSInteger age;
    @property (nonatomic,retain)NSString * name;
    @property (nonatomic,copy)NSString * bb;

    .m文件中

    //如果不加以下三行,就报会找不到_age,_name,_bb变量的错误
    @synthesize age = _age;
    @synthesize name = _name;
    @synthesize bb =_bb;
    
    
    - (void)setName:(NSString *)name
    {
        if (_name!=name) {
            [_name release];
            _name = [name retain];
        }
    }
    - (NSString *)name
    {
        return [[_name retain] autorelease];
    }
    - (void)setAge:(NSInteger)age
    {
        _age = age;
    }
    - (NSInteger)age
    {
        return _age;
    }
    
    - (void)setBb:(NSString *)bb
    {
        if (_bb!=bb) {
            [_bb release];
            _bb = [bb copy];
        }
    }
    - (NSString *)bb
    {
        return [[_bb retain]autorelease];
    }
    总结:一定要分清属性和变量的区别,不能混淆。@synthesize 声明的属性=变量。意思是,将属性的setter,getter方法,作用于这个变量。
  • 相关阅读:
    agc015D A or...or B Problem
    agc016E Poor Turkeys
    CTSC2016时空旅行
    假期的宿舍[ZJOI2009]
    上白泽慧音(luogu P1726
    小K的农场(luogu P1993
    Cashier Employment(poj1275
    Intervals(poj1201
    序列分割[Apio2014]
    特别行动队[APIO2010]
  • 原文地址:https://www.cnblogs.com/xclidongbo/p/3826018.html
Copyright © 2011-2022 走看看