A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

@property用法:
    1,@property是编译器的指令;
    2,@property的语法:
        @property int age;
        (这句话的意思,就是帮我们生成age 的get和set方法的声明)(xcode4.4以前)
        -(void)setAge:(int)age;
        -(int)age;

    3,@property只能写在@interface @end中。


    4,xcode4.4以后property做了增强 不但帮助我们自动生成get/set方法的声明还帮助我们自动生成get/set方法的实现 。


    5,告诉编译器,要生成的get/set方法声明的成员变量类型是int 。


    6,如果没有手动声明成员变量,perperty会在.m文件中自动帮我们生成一个开头的成员变量



(二),@synthesize用法:
    1. @synthesize age;
        1),生成一个age的私有实例变量;
        2),生成实例变量的get和set方法的实现

    2. @synthesize 给指定的实例变量赋值。
        @synthesize age = _age;

注意;
    如果是@synthesize的话, 变量名要先在.h文件中声明。
    @property,@synthesize这两个可以配合使用,用于简化set和get方法的定义和实现。


(三),xcode4.4之后
@property的增强用法:
    @property int age;这句话干了三件事:

    1,在.h文件中生成age的get和set方法的声明;
@interface Person : NSObject
-(void)setAge:(int)age;
            -(int)age;
        @end

    2,在.m文件中生成_age的私有实例变量;(前提是,没有在.h文件中手动声明_age变量)
        @implementation Person{
            int _age;//不能被子类继承
        }

        @end

    3,在.m文件中生成age的get和set方法的实现;
        @implementation Person{
            int _age;
        }
        -(void)setAge:(int)age{
            _age = age;
        }
        -(int)age{
            return _age;
        }
        @end


(四),在增强@property下,重写setter和getter方法:

    在使用@property情况下,可以重写getter和setter方法.需要注意的是,当把setter和getter方法都实现了之后,实例变量也需要手动去写.

评分

参与人数 2黑马币 +6 收起 理由
------ + 4 很给力!
ZQG + 2 很给力!

查看全部评分

11 个回复

正序浏览
感谢分享,学习了!
回复 使用道具 举报
赞一个。
回复 使用道具 举报
学习了   
回复 使用道具 举报
真是不错哦
回复 使用道具 举报
摆摆 中级黑马 2015-9-17 09:47:25
7#
楼主辛苦了,共勉!
回复 使用道具 举报
学习了学习了
回复 使用道具 举报
杰哥真不容易,一个人要给三个人的号赚取技术分,还要唱三簧,我已经感动的留下了眼泪水
回复 使用道具 举报
这手打的太辛苦了
回复 使用道具 举报
好好好,好久没见这么优秀的帖子
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马