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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

@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 个回复

正序浏览
zzx0826 来自手机 中级黑马 2015-9-19 13:35:24
12#
没什么好说的,一个字,好!
回复 使用道具 举报
感谢分享,学习了!
回复 使用道具 举报
赞一个。
回复 使用道具 举报
chensc 金牌黑马 2015-9-18 21:38:29
9#
学习学习!
回复 使用道具 举报
学习了   
回复 使用道具 举报
真是不错哦
回复 使用道具 举报
楼主辛苦了,共勉!
回复 使用道具 举报
学习了学习了
回复 使用道具 举报
杰哥真不容易,一个人要给三个人的号赚取技术分,还要唱三簧,我已经感动的留下了眼泪水
回复 使用道具 举报
这手打的太辛苦了
回复 使用道具 举报
好好好,好久没见这么优秀的帖子
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马