作为从C++到Objective-C的过渡过程的一部分,我深入阅读了Cocoa和Objective C Up and Running一书.
在其中一本书代码示例中,有一条线对我目前的知识水平没有意义:
它是类方法的声明+ (Photo*) photo;.
任何人都可以解释一下原因,请问为什么作者决定将方法(Photo*) photo;声明为类方法而不是实例方法?
我已经研究过这个理论,即instane方法类似于类成员函数,而类方法就像C++中的静态函数.但这仍然没有回答我的问题.
这是声明代码:
#import <Foundation/Foundation.h>
@interface Photo : NSObject{
NSString* caption;
NSString* photographer;
}
+ (Photo*) photo;
- (NSString*) caption;
- (NSString*) photographer;
- (void) setCaption: (NSString*)input;
- (void) setPhotographer: (NSString*)input;
@end
Run Code Online (Sandbox Code Playgroud)
实现代码如下:
#import "Photo.h"
@implementation Photo
- (id)init
{
self = [super init];
if (self) {
[self setCaption:@"Default Caption"];
[self setPhotographer:@"Default Photographer"];
}
return self;
}
+ (Photo*) photo {
Photo* newPhoto = [[Photo alloc] init];
return [newPhoto autorelease];
}
- (NSString*) caption {
return caption;
}
- (NSString*) photographer {
return photographer;
}
- (void) setCaption:(NSString *)input {
[caption autorelease];
caption = [input retain];
}
- (void) setPhotographer: (NSString *)input {
[photographer autorelease];
photographer = [input retain];
}
- (void)dealloc
{
[self setCaption:nil];
[self setPhotographer:nil];
[super dealloc];
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2713 次 |
| 最近记录: |