//01加强-10

@property .4前

) @property + 手动实现
) @property int age; + @synthesize age;//get和set方法的声明和实现都帮我们做了
) @property int age + @synthesizes age = _b;
@property .4增强 .h @property int age;
) 生成_age
) 生成_age的get和set方法的声明
) 实现_age的get和set方法 // 基本数据类型
int _age;
// set方法的写法
-(void)setAge:(int) age
{
_age = age;
} // 用assign修饰后,仍旧会生成以上标准的set方法
@property (assign) int age; // oc对象类型
@property (retain) Car *car ;
// 用retain修饰后,生成如下内存管理代码
-(void)setCar:(int) car
{
if(_car ! = car)
{
[_car release];
_car = [car retain];
}
} .内存管理相关参数
retain : release旧值,retain新值(用于OC对象)
assign : 直接赋值,不做任何内存管理(默认,用于非OC对象类型)
copy : release旧值,copy新值(一般用于NSString *) //使用@property增强型 生成get和set方法
@property(nonatomic,retain)Car *car;
//.m文件中实际上生成的是
- (void)setCar:(Car *)cat
{
if(_car != car)
{
[_car release];
_car = [car retain];
}
} .@property 参数(二)
、是否要生成set方法(若为只读属性,则不生成)
readonly:只读,只会生成get的声明和实现
readwrite:默认的,同时生成set和get的声明和实现
.多线程管理(苹果在一定程度上屏蔽了多线程操作)
nonatomic:高性能,一般使用这个
atomic:低性能,默认
atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。
.set和get方法的名称
修改set和get方法的名称,主要用于布尔类型。因为返回布尔类型的方法名一般以is开头,修改 名称一般用在布尔类型中的getter。
控制set方法和get方法的名称
setter : 设置set方法的名称,一定有个冒号:
getter : 设置get方法的名称
@property(nonatomic,assign, setter=abc:,getter=haha)int age
Gamer.h

#import <Foundation/Foundation.h>
#import "House.h" @interface Gamer : NSObject
//{
// House *_house; // 房间
//}
//- (void)setHouse:(House *)house;
//- (House *)house; // @property的完整格式
// @property(参数,参数)成员变量类型 成员变量名称(去掉下划线); // retain:参数用于对象类型,能够帮我们生成set方法的内存管理代码.
// assign:参数,用于基本数据类型,不做内存管理代码. // atomic:对线程加锁,性能低,安全性高(默认).
// nonatomic:不对线程加锁,性能高,安全性低.手机端,建议使用nonatomic // readonly:只能操作,只给外界提供get方法,不提供set方法.
// readwirte:可读可写. // setter:改set方法的名字
// getter:改get方法的名字 @property (nonatomic,retain)House *house;//对象类型用retain
// 外界可以读写.如果,只让外界读取,不能写入时,
@property (atomic,assign,readonly)int age;//基本类型用assign
// 判断玩家是否是vip
//BOOL res = game.isVip;
//BOOL res1 = [game isVip];
@property(nonatomic,assign,getter=isVip,setter=noVip:)BOOL vip;
@end Gamer.m #import "Gamer.h" @implementation Gamer
- (void)dealloc
{
NSLog(@"玩家被释放");
// 当玩家自己被回收时,对房间进行一次release操作.
[_house release];
[super dealloc];
}
//@property已经做了内存管理,下面就不要内存管理了。
//- (void)setAge:(int)age
//{
// _age = age;
//}
//- (void)setHouse:(House *)house
//{
// if (_house != house) {
// //当玩家换房间时,需要对旧房间做一次release操作
// [_house release];
// // 玩家要进入房间,玩家就要对房间进行一次retain操作.
// _house = [house retain];
// }
//
//}
//- (House *)house
//{
// return _house;
//}
@end House.h #import <Foundation/Foundation.h> @interface House : NSObject
@property int no;
@end House.m #import "House.h" @implementation House
- (void)dealloc
{
NSLog(@"%d房间被释放了",_no); [super dealloc];
}
@end main.m #import <Foundation/Foundation.h>
#import "Gamer.h" int main(int argc, const char * argv[]) {
@autoreleasepool {
Gamer *game = [[Gamer alloc] init]; BOOL res = game.isVip;
BOOL res1 = [game isVip];
[game noVip:YES];
}
return ;
}
void demo1(){
Gamer *g = [[Gamer alloc] init];
g.age = ;
NSLog(@"%d",g.age); House *h = [[House alloc] init]; g.house = h; [g release];
[h release];
}
void demo()
{
// 创建1个玩家
Gamer *gamer = [[Gamer alloc] init]; // 玩家1 // 创建1个房间
House *house1 = [[House alloc] init]; // 房间1 1
house1.no = ; // 创建第二个房间
House *house2 = [[House alloc] init]; // 房间2 1
house2.no = ; // 玩家进入房间
gamer.house = house1; // 房间 2 gamer.house = house2; // 2号房间 2 [house1 release]; // 房间 1 // 房间1被释放
[house2 release]; // 房间2 1 // gamer.house = house1; // 操作僵尸对象
// gamer.house = house2; [gamer release]; }

oc-27-@property的参数的更多相关文章

  1. Objective-C 【@property 的参数问题】

    ------------------------------------------- @property参数 总的来说,这是一种编译器的特性(在生成@property的时候为@property添加相 ...

  2. strong,weak, retain, assign的区别@property的参数

    strong,weak, retain, assign的区别@property的参数 先说经验 使用场合 copy:NSString,block, weak:UI控件,代理 strong:一般对象.自 ...

  3. OC语言@property @synthesize和id

    OC语言@property @synthesize和id 一.@property @synthesize关键字 注意:这两个关键字是编译器特性,让xcode可以自动生成getter和setter的声明 ...

  4. OC中@property属性关键字的使用(assign/weak/strong/copy)

    OC中@property属性关键字的使用(assign/weak/strong/copy) 一.assign 用于 ‘基本数据类型’.‘枚举’.‘结构体’ 等非OC对象类型 eg:int.bool等 ...

  5. OC之property和自动释放池

    property实例 property参数 自动释放池 一.property实例 1.前边的例子我们看到,我们在一个类中如果用到另外一个类的实例作为自己的成员变量时,通常需要在setter方法中,先r ...

  6. 李洪强iOS开发之OC语言@property @synthesize和id

    OC语言@property @synthesize和id 一.@property @synthesize关键字 注意:这两个关键字是编译器特性,让xcode可以自动生成getter和setter的声明 ...

  7. js课程 2-7 带默认参数的函数怎么写

    js课程 2-7 带默认参数的函数怎么写(注意参数顺序) 一.总结 一句话总结:默认参数一定要放在最后面,而且还有注意你调用参数的时候给参数的顺序习惯.直接加个等于号就可以是默认参数.function ...

  8. OC基础--Property

    编译器指令: 用来告诉编译器要做什么 @property: @property是编译器的指令 告诉编译器在@interface中自动生成setter和getter的声明 @synthesize: @s ...

  9. OC中property的有关属性

    property的有关属性: (1)readwrite是可读可写特征:需要生成getter方法和setter方法: (2)readonly是只读特性只会生成getter方法不会生成setter方法: ...

  10. [OC笔记]@property之个人理解,大神轻拍

    /** * 一个简单的对象 * * @author suzhen * */ public class SimpleObjcet { /** * 声明一个age字段 */ private Object ...

随机推荐

  1. 在VS2103环境中集成Doxygen工具

    自己已将学习了两三次了吧,差不多这次该总结一下: Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C.C++.Java.Objective-C和IDL语言,部分支持P ...

  2. excel导入数据到sqlserver

    1.读取excel数据到dataset public static System.Data.DataSet ExcelSqlConnection(string filepath, string tab ...

  3. Juniti学习总结

    JUnit简介 JUnit是由 Erich Gamma和Kent Beck编写的一个回归测试框架(regression testing framework).JUnit测试是程序员测试,即所谓白盒测试 ...

  4. Scrum之Sprint会议

    Scrum的项目过程有一系列的Sprint组成. Sprint的长度一般控制在2-4周. 通过固定的周期保持良好的节奏. 产品的设计.开发.测试都在Sprint期间完成. Sprint结束时交付可以工 ...

  5. 子元素过滤器nth-child解释

    jQuery中的子元素过滤器nth-child是指:选取每个父元素下的第index个子元素或者奇偶元素(index从1算起) 这里有几点要注意: 1. index 从1开始算 2. 过滤器filter ...

  6. JavaScript 继承方式详解

    js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承)类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现继 ...

  7. 第三百五十九天 how can I 坚持

    在家待了一天,鼓捣了下linux,总算能连上网了,懂得还是少啊. 晚上去华北电力大学跑了会步,十圈,还挺有成就感呢,就是没带手环,哎. 以后学习一定要记笔记,上了这么多年学,都 没学会怎么记笔记,也是 ...

  8. jQuery Callback 函数

    @(编程) Callback 函数在当前动画 100% 完成之后执行. jQuery 动画的问题 许多 jQuery 函数涉及动画.这些函数也许会将 speed 或 duration 作为可选参数. ...

  9. How Tomcat Works(十)

    本文接下来分析tomcat的日志记录器,日志记录器是用来记录消息的组件,在tomcat中,日志记录器需要与某个servlet容器相关连:在org.apache.catalina.logger包下,to ...

  10. uva 10056 - What is the Probability ?(概率)

    题目连接:uva 10056 - What is the Probability ? 题目大意:给出n和p以及m,表示有n个人在丢色子, 谁先丢到某个值就表示胜利,每个人丢到的胜利数值的概率都为p,问 ...