---------------------- 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