Как часть моего процесса перехода от C ++ к Objective-C, я интенсивно читаю книгу Какао и Objective C Up and Running. 1003 *
это строка, которая не имеет смысла для меня с моим текущим уровнем знаний:
Это объявление метода класса + (Photo*) photo;
.
Может кто-нибудь объяснить мне причину, пожалуйста, почемуавтор решил для метода (Photo*) photo;
объявить его как метод класса вместо метода экземпляра ?
У меня есть теория, что метод экземпляраэто что-то вроде функции-члена класса , и этот метод класса похож на статическую функцию в 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
Код реализации следующий:
#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