黑马程序员-----@property和@synthesize

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

@property和@synthesize

// Student.h

// @property

//

// Created by adh on 14-7-21.

// Copyright (c) 2014年 adh. All rights reserved.

//

1、@property

@property int age;

@property int no;

@property (retain) *Book book;

@property (nonatomic,retain) *Book book;

@property (nonatomic,getter = isBook) BOOLisRich;

1>@property只用于申明

2>当编译器遇到@property会自动展开成setter和getter方法的申明

3>参数说明

 retain:只用于OC对象,自动生成带内存管理的setter方法,先release原来值,再retain现在的值getter方法不需要管理内存

 assgin:基本数据类型,默认参数

 readonly:只读属性,即只生成getter方法不生成setter方法

 readwrite:默认,即生成setter和getter方法

 nonatomic/atomic:原子性,提供多线程策略,atomic相当于给方法枷锁,默认atomic;nonatomic即不考了线程安全问题;在iPhone开发中我们的内存是恨有限的,一般为了提高性能,基本上不使用atomic而是使用nonatomic

 copy:setter先release旧值,在copy新值

 getter:用来制定getter方法的方法名

 

2、@synthesize

@synthesize age;

@synthesize no;

@synthesize age,no;

@synthesize age = _age;

1>@synthesize只用于.m文件的

2>当编译器遇到@synthesize会自动展开成setter和getter方法的实现

3>@synthesize自动访问与age同名的变量,如果没有找到同名变量,会自动生成一个私有的age同名变量,所以有了@property可以直接省略.h文件当中的变量的申明,让编译器自动申明

4>@synthesize age = _age;代表setter和getter会自_age变量

5>如果我们没有实现setter或者getter方法,synthesize会自动生成缺少的标准的setter或者getter方法,当然如果setter和getter方法都没有实现synthesize会自动生成标准的setter和getter方法

 

4、新特性

1>在Xcode4.5级以上的环境下,当编译器遇到@property就会自动在.h文件当中实现@synthesize,而不需要手动添加,并且默认去访问_age成员变量

2>如果找不到_age的变量申明,则编译器自动生成一个私有的_age成员变量



---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------详细请查看: www.itheima.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值