遵循 big nerd ranch ios 编程书,注意到除了我的 dateCreated var 之外,我的所有实例变量都声明了 getter 和 setter:
#import <Foundation/Foundation.h>
@interface BNRItem : NSObject
{
NSString *itemName;
NSString *serialNumber;
int valueInDollars;
NSDate *dateCreated;
}
- (id)initWithItemName:(NSString *)name
valueInDollars:(int)value
serialNumber:(NSString *)sNumber;
- (void)setItemName:(NSString *)str;
- (NSString *)itemName;
- (void)setSerialNumber:(NSString *)str;
- (NSString *)serialNumber;
- (void)setValueInDollars:(int)i;
- (int)valueInDollars;
- (NSDate *)dateCreated;
@end
NSDate 有什么特别之处以至于它不需要声明 setter?
同样在我的实现文件中,我为什么能够调用 dateCreated 并将其存储在没有指定类型的变量中?
它是如何设置的?还是首先打电话?我敢肯定有什么在后台发生。我查看了 NSDate 对象的信息,但我仍然很困惑。
//implementation of the designated initializer
- (id)initWithItemName:(NSString *)name
valueInDollars:(int)value
serialNumber:(NSString *)sNumber
{
//call NSObject's (superclasses) initializer
self = [super init];
//give the new instance of bnritem some values for its instance variables
[self setItemName:name];
[self setValueInDollars:value];
[self setSerialNumber:sNumber];
dateCreated = [[NSDate alloc] init];
//return the newly intialized object
return self;
}
在试图快速浏览完这本书后,我决定从头开始,慢慢来,确保在移动之前我 100% 了解所有内容。我真的花了一整天的时间在这一章上,现在这是一个我似乎无法跨越的障碍。
希望你能帮忙。亲切的问候