-4

请帮助我知道我们为什么使用@property@synthesis?我们需要在哪里使用@dynamic?谢谢你。

4

3 回答 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 回答