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];
  }
  }

相关文章推荐

Verilog中一些综合(synthesis)指令

black_box_pad_pin 声明用户定义的黑盒的管脚,作为外部环境可见的I/O pad,如果有不止一个端口,列在双引号内,以逗号分开。一般不需要这一属性,Synplify提供了预定义的I...

object-c中@property @synthesize的用法

holydancer原创,如需转载,请在显要位置注明: 转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/deta...

IOS前奏之Object-c @property和@synthesize的基本使用

Object-c @property和@synthesize的基本使用

IOS开发基础Object-C(06)—@property 和@synthesize语法

今天我们来学一下@property和@synthesize语法,在我的前几篇博客中,我详细介绍了getter方法和setter方法的创建,我们再来回顾一下。Student.h文件中声明#import ...

Object-C: 学习实例3 使用集合对象

Exam_03_Impl.h // // Exam_03_Impl.h // Exam_03 // // Created by yao_yu on 13-11-19. // Copyrigh...

OC学习笔记(8)Object-C组合使用

1、ASPoint类 //.h #import @interface ASPoint : NSObject @property(nonatomic,assign) double x; @prop...

OC学习笔记(9)Object-C多态的使用

1、基类ASShape //.h #import @interface ASShape : NSObject -(void) draw; @end //.m #import "ASShape.h"...

Object-C学习笔记五-----使用跨文件依赖关系

前面所有的全部写在main函数里面。这样即不方便查找,也不方便修改。所以我们提取相应的类拼接在一起,方便查看和修改。 首先是Tire类和Engine类 File-New File 出现如下画面 ...

iOS开发-Object-C学习之结构体使用

前言:定义结构体并不是定义一个变量,而是定义了种数据类型。   结构体作用:   结构体和其他类型基础数据类型一样,例如int类型,char类型 只不过结构体可以做成你想要的数据类型。以方便...
  • hatsuna
  • hatsuna
  • 2015年07月27日 10:50
  • 287

黑马程序员_object c学习日记②_@property和@synthesize、构造方法、分类及类对象

@property:可以自动生成某个成员变量的setter和getter的声明。只能用在interface中。 @property int age;与下面两句等价 -       (void)se...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:object-c学习:@synthesize配对使用
举报原因:
原因补充:

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