我一直在使用Apple的“你的第二个IOS应用程序”教程“我注意到每次使用NSDateFormatter
生成日期字符串时我都应该投射输入日期对象。< / p>
e.g。 (Page - 在“实现configureView方法”下面<)
BirdSighting *theSighting = self.sighting;
if (theSighting) {
self.birdNameLabel.text = [theSighting name];
self.locationLabel.text = [theSighting location];
self.dateLabel.text = [formatter stringFromDate:(NSDate *)theSighting.date]; // Here
}
但是我知道在BirdSighting
类中date
属性始终是NSDate
对象。
所以我想知道为什么教程总是输入输入,是否存在某种Objective-c约定或框架对话,建议你这样做?如果是这样,为什么?
答案 0 :(得分:4)
没有必要。演员只是为了清晰起见,因为该属性已被定义为NSDate
,here:
@property (nonatomic, strong) NSDate *date;
在处理核心基础时,以这种形式进行强制转换的唯一情况是非弧形,如下所示:
CFDateRef asCFDate;
NSDate *asNSDate = (NSDate *) asCFDate;
但是,在ARC中,您将使用__bridge
强制转换。
答案 1 :(得分:2)
演员阵容是不必要的,在我看来应该删除。
该属性已在数据模型对象上定义为NSDate
(除非后面的步骤将其重新定义为id
或其他内容,这是值得怀疑的)因此它没有提供额外的信息对代码或编译器的读者。