首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

objective-c中的@property,@synthesize等简易用法(8)

2013-10-22 
objective-c中的@property,@synthesize等简易用法(八)holydancer原创,如需转载,请在显要位置注明:转自holy

objective-c中的@property,@synthesize等简易用法(八)

holydancer原创,如需转载,请在显要位置注明:

转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7355833

?

在objective-c中,我们可以用new简单的代替alloc init,我们今天介绍的是类似于new这种简易用法的另一种OC特性,用@property,@synthesize来代替get,set方法,用起来很简单,可以省掉很多的代码量,当需要用SET,GET方法的地方,我们可以用@property,@synthesize来简单的代替,这时系统会自动给我们生成该变量的set,get方法,@property对应方法的声明部分,@synthesize对应方法的实现部分。

Human.h:

?

[plain]?view plaincopy?
  1. #import?<Foundation/Foundation.h>??
  2. ??
  3. @interface?Human?:?NSObject??
  4. {??
  5. ????int?age;??
  6. ????float?height;??
  7. }??
  8. //这里用@property表示,代表了age和height的set,get方法的声明??
  9. @property?int?age;??
  10. @property?float?height;??
  11. ??
  12. @end??


Human.m:

?

?

[plain]?view plaincopy?
  1. #import?"Human.h"??
  2. ??
  3. @implementation?Human??
  4. //这里用@synthesize表示age,height变量的set,get方法的实现。??
  5. @synthesize?age;??
  6. @synthesize?height;??
  7. ??
  8. @end??


main.m:

?

?

[plain]?view plaincopy?
  1. #import?<Foundation/Foundation.h>??
  2. #import?"Human.h"??
  3. int?main(int?argc,?const?char?*?argv[])??
  4. {??
  5. ????NSAutoreleasePool?*pool=[[NSAutoreleasePool?alloc]init];??
  6. ??????
  7. ????Human?*human?=?[[Human?alloc]init];??
  8. ????//“.”在等号左边,相当于set方法。??
  9. ??????
  10. ????human.age=20;?//等价于[human?setAge:20]??
  11. ????human.height=60.50;??
  12. ??????
  13. ????//“.”在等号右边,相当于get方法。??
  14. ????float?tmp=human.height;//等价于?float?tmp?=?[human?height]??
  15. ????NSLog(@"年龄%d,身高%f",human.age,tmp);??
  16. ??????
  17. ????[human?release];??
  18. ????[pool?release];//相当于对池中每个对象执行了一次release;??
  19. ??????
  20. ??
  21. }??

?

输出语句:

?

2012-03-15 10:11:34.052 String[325:403]?[plain]?view plaincopy?

  1. #import?<Foundation/Foundation.h>??
  2. ??
  3. @interface?Human?:?NSObject??
  4. {??
  5. ????int?age;??
  6. ????float?height;??
  7. }??
  8. //这里用@property表示,代表了age和height的set,get方法的声明??
  9. @property?(readonly)int?age;??
  10. @property?float?height;??
  11. ??
  12. @end??


Human.m:

?

?

[plain]?view plaincopy?
  1. #import?"Human.h"??
  2. ??
  3. @implementation?Human??
  4. //重写init方法给age赋初值??
  5. -(id)init??
  6. {??
  7. ????if(self=[super?init])??
  8. ????{??
  9. ????????age=20;??
  10. ????}??
  11. ????return?self;??
  12. }??
  13. //这里用@synthesize表示age,height变量的set,get方法的实现。??
  14. @synthesize?age;??
  15. @synthesize?height;??
  16. ??
  17. @end??


main.m:

?

?

[plain]?view plaincopy?
  1. #import?<Foundation/Foundation.h>??
  2. #import?"Human.h"??
  3. int?main(int?argc,?const?char?*?argv[])??
  4. {??
  5. ????NSAutoreleasePool?*pool=[[NSAutoreleasePool?alloc]init];??
  6. ??????
  7. ????Human?*human?=?[[Human?alloc]init];??
  8. ????human.height=60.5;??
  9. ????//human.age=30;?该行如果不注释是会报错的,即age只有get方法,没有set方法??
  10. ????NSLog(@"年龄age=%d",human.age);??
  11. ??????
  12. ?????
  13. ????[human?release];??
  14. ????[pool?release];//相当于对池中每个对象执行了一次release;??
  15. ??????
  16. ??
  17. }??


输出:

?

2012-03-15 10:32:11.497 String[360:403]??

关键字:objective-c ,objective c , oc ,@property , @synthesize

热点排行