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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

@property关键字和@synthesize关键字

(一),@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 个回复

倒序浏览
这个 顶一下吧
回复 使用道具 举报
好棒的总结
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马