请帮助我知道我们为什么使用@property
和@synthesis
?我们需要在哪里使用@dynamic
?谢谢你。
问问题
1070 次
3 回答
1
特性
当我们之前编写标题和作者的访问器方法时,您可能已经注意到代码很简单,并且可能是通用的。
属性是 Objective-C 中的一个特性,它允许我们自动生成访问器,并且还有一些其他的好处。让我们将 Photo 类转换为使用属性。
这是它之前的样子:#import
@interface Photo : NSObject {
NSString* caption;
NSString* photographer;
}
- (NSString*) caption;
- (NSString*) photographer;
- (void) setCaption: (NSString*)input;
- (void) setPhotographer: (NSString*)input;
@end
这是转换为属性后的样子:
#import <Cocoa/Cocoa.h>
@interface Photo : NSObject {
NSString* caption;
NSString* photographer;
}
@property (retain) NSString* caption;
@property (retain) NSString* photographer;
@end
@property 是一个声明属性的 Objective-C 指令。括号中的“retain”指定 setter 应该保留输入值,而该行的其余部分仅指定属性的类型和名称。
现在让我们看一下类的实现:
#import "Photo.h"
@implementation Photo
@synthesize caption;
@synthesize photographer;
- (void) dealloc
{
[caption release];
[photographer release];
[super dealloc];
}
@end
@synthesize 指令会自动为我们生成 setter 和 getter,所以我们必须为这个类实现 dealloc 方法。
@synthesize 将为您的属性生成 getter 和 setter 方法。@dynamic 只是告诉编译器 getter 和 setter 方法不是由类本身实现的,而是由其他地方实现的
于 2012-12-21T06:54:36.703 回答
0
@property 和 @synthesis 一起工作,它可以帮助你自动定义 setter 和 getter。在 xcode 4.5 中,@synthesis 不是必需的,编译器会自动添加它。
于 2012-12-21T06:52:45.510 回答
0
@property
是 的声明accessors
。这只是一个声明。这些之间几乎没有区别。在这里检查
于 2012-12-21T06:56:56.883 回答