Lon*_*Guy 0 cocoa cocoa-touch objective-c
继大书呆子牧场ios编程书和注意到的getter和setter已经为我的所有实例变量声明了除了我的dateCreated var:
#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
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
在试图匆匆通过这本书之后,我决定从头开始花时间并确保在移动之前100%理解所有内容.我真的花了整整一天的时间来完成这一章,现在这是一个我无法跨越的障碍.
希望你能帮忙.亲切的问候
没什么特别的NSDate.没有setter方法,因为该属性是公开只读的.它的值在内部设置,一次,永不改变.如果你看一下属性的名称,那么就有充分的理由.
你不需要一个二传手.您可以直接设置实例变量.Setter是一个结构,允许您在实例变量的管理周围添加一些结构(比如验证传入的值).