• 属性property(二十二)


    在属性之前,在定义实例变量时,每一个实例变量都需要配对一对getter、setter方法,这一对对的getter和setter方法,都需要我们一个个去声明和实现。由于写getter和setter方法是一项大量重复的工作,oc在2.0版本就给我们提供了解决这个问题的办法,就是加入@property。property的出现,就是为了简化代码和提高读写数据的安全性。

    用@property来标识属性,标识后的变量,会自动生成与其变量名对应的getter和setter方法。我们在main方法中可以直接调用其getter和setter方法。

    如定义了一个name变量,用@property来标识后,oc会自动生成一套getter,setter方法:getter方法:name,setter方法:setName:(包括冒号:)。则在main方法中,就可以直接调用name方法和setName:方法。

    一般在类的.h文件中声明@property,系统自动生成getter,setter方法,此时如果我们不喜欢生成的getter、setter方法名,可以在.m实现文件中,在@implementation和@end之间,用@synthesize关键字,把我们想要的名字,赋值给我们的自动生成的getter、setter方法名。并且在以后调用,都要用我们起得方法名,不能再用getter、setter方法名。

    一般情况下,我们不要去修改自动生成的getter、setter方法名。

    @property 负责生成getter、setter方法名

    @synthesize 负责实现getter、setter实现。

    Person.h

    #import <Foundation/Foundation.h>

    @interface Person : NSObject{

        NSString *name;

    }

        //具体数学(推荐的书)

        //编程之美(推荐的书)

    //自动生成一个带下划线 _ 的,并且以属性名命名的实例变量 属性名:name,自动生成 _name

    //同时在.m文件中还生成了@synthesize 属性名 = 实例变量名

    //@property生成了getter和setter方法的声明

    //由@synthesize负责实现 getter、setter方法

    @property NSString *name;

     

    @end

    Person.m

    #import "Person.h"

    @implementation Person

    //一般不会修改自动生成的实例变量名

    @synthesize name = _age;//若是这样改,则实例变量的名为:_age

    //@synthesize name = _name;

     

    - (void)test{

        _age = @"12233";

    }

    @end

    main.m

    #import <Foundation/Foundation.h>

    #import "Person.h"

    int main(int argc, const char * argv[]) {

        @autoreleasepool {

            Person *p1 = [[Person alloc]init];

            [p1 setName:@"北京"];

            [p1 name];

            NSLog(@"%@",[p1 name]);//2015-04-22 10:29:19.463 OCLesson8_属性[878:36298] 北京

          

        }

        return 0;

    }

  • 相关阅读:
    21-MySQL-Ubuntu-快速回到SQL语句的行首和行末
    2- SQL语句的强化
    1-数据准备
    20-MySQL-Ubuntu-数据表的查询-子查询(九)
    19-MySQL-Ubuntu-数据表的查询-自关联(八)
    18-MySQL-Ubuntu-数据表的查询-连接(七)
    17-MySQL-Ubuntu-数据表的查询-分页(六)
    16-MySQL-Ubuntu-数据表的查询-分组与聚合(五)
    15-MySQL-Ubuntu-数据表的查询-聚合函数(四)
    14-MySQL-Ubuntu-数据表的查询-范围查询(三)
  • 原文地址:https://www.cnblogs.com/DevinSMR/p/5118629.html
Copyright © 2020-2023  润新知