object-c学习:@synthesize配对使用

转载 2012年03月27日 17:22:54
Objective-C语言关键词,与@synthesize配对使用。
  功能:让编译器自动编写一个与数据成员同名的方法声明来省去读写方法的声明。
  如:
  1、在头文件中:
  @property int count;
  等效于在头文件中声明2个方法:
  - (int)count;
  -(void)setCount:(int)newCount;
  2、实现文件(.m)中
  @synthesize count;
  等效于在实现文件(.m)中实现2个方法。
  - (int)count
  {
  return count;
  }
  -(void)setCount:(int)newCount
  {
  count = newCount;
  }
  以上等效的函数部分由编译器自动帮开发者填充完成,简化了编码输入工作量。

编辑本段格式

  声明property的语法为:
  @property (参数1,参数2) 类型 名字;
  如:
  @property(nonatomic,retain) UIWindow *window;
  其中参数主要分为三类:
  读写属性: (readwrite/readonly)
  setter语意:(assign/retain/copy)
  原子性: (atomicity/nonatomic)
  各参数意义如下:
  readwrite
  产生setter\getter方法
  readonly
  只产生简单的getter,没有setter。
  assign
  默认类型,setter方法直接赋值,而不进行retain操作
  retain
  setter方法对参数进行release旧值,再retain新值。
  copy
  setter方法进行Copy操作,与retain一样
  nonatomic
  禁止多线程,变量保护,提高性能

编辑本段参数类型详解

  参数中比较复杂的是retain和copy,具体分析如下:

getter分析

  1、 @property(nonatomic,retain)test* thetest;
  @property(nonatomic ,copy)test* thetest;
  等效代码:
  -(void)thetest
  {
  return thetest;
  }
  2、@property(retain)test* thetest;
  @property(copy)test* thetest;
  等效代码:
  -(void)thetest
  {
  [thetest retain];
  return [thetest autorelease];
  }

setter分析

  1、
  @property(nonatomic,retain)test* thetest;
  @property(retain)test* thetest;
  等效于:
  -(void)setThetest:(test *)newThetest {
  if (thetest!= newThetest) {
  [thetestrelease];
  thetest= [newThetest retain];
  }
  }
  2、@property(nonatomic,copy)test* thetest;
  @property(copy)test* thetest;
  等效于:
  -(void)setThetest:(test *)newThetest {
  if (thetest!= newThetest) {
  [thetestrelease];
  thetest= [newThetest copy];
  }
  }

object-c中@property @synthesize的用法

holydancer原创,如需转载,请在显要位置注明: 转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/deta...
  • llf021421
  • llf021421
  • 2014年03月16日 02:02
  • 4388

OC学习篇之---@property和@synthesize的使用

在之前一片文章我们介绍了OC中的内存管理:http://blog.csdn.net/jiangwei0910410003/article/details/41924683,今天我们来介绍两个关键字的使...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2014年12月14日 16:45
  • 29451

为什么不需要写@synthesize

@synthesize的一点疑问
  • u013983998
  • u013983998
  • 2015年12月22日 18:44
  • 1258

Object-C:@property和@synthesize

property:属性 synthesize:合成 @property: 功能:让编译器自动编写一个与数据成员同名的方法声明来省去读写方法的声明。 格式:声明property的语法为:...
  • u011215767
  • u011215767
  • 2016年10月26日 17:02
  • 115

使用第三方框架的时候报“synthesize of ‘weak’ property is only allowed in ARC or GC mode”错

SBJson在ios下提示“@synthesize of ‘weak’ property is only allowed in ARC or GC mode” Posted 2014/08/23 ...
  • liu_ligui
  • liu_ligui
  • 2014年11月11日 17:31
  • 2346

Object-C Property and Synthesize

转自:http://blog.eddie.com.tw/2010/12/08/property-and-synthesize/
  • yasi_xi
  • yasi_xi
  • 2014年11月14日 14:27
  • 521

@synthesize 的作用

原文链接:Why use @synthesize statements译文iOS 6 之后 LLVM 编译器引入property autosynthesis,即属性自动合成。换句话说,就是编译器会为每...
  • shuai265
  • shuai265
  • 2017年07月12日 16:19
  • 549

OC之@property @synthesize用法详解

在OC开发中 点语法用的是最为广泛的语法
  • hnjyzqq
  • hnjyzqq
  • 2014年09月22日 08:22
  • 900

Objective-C语言关键词,与@synthesize配对使用。

Objective-C语言关键词,与@synthesize配对使用。   功能:让编译器自动编写一个与数据成员同名的方法声明来省去读写方法的声明。   如:   1、在头...
  • WQwq1985
  • WQwq1985
  • 2012年11月26日 01:40
  • 336

iOS中的@dynamic与@synthesize

一、@dynamic与@synthesize的区别 首先@表示当前使用的OC代码。 @property有两个对应的词,一个是@synthesize,一个是@dynamic。如果@synthesiz...
  • Winzlee
  • Winzlee
  • 2016年06月23日 15:29
  • 1037
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:object-c学习:@synthesize配对使用
举报原因:
原因补充:

(最多只允许输入30个字)