为什么需要演员呢?

时间:2012-04-16 14:52:39

标签: ios objective-c

我一直在使用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约定或框架对话,建议你这样做?如果是这样,为什么?

2 个答案:

答案 0 :(得分:4)

没有必要。演员只是为了清晰起见,因为该属性已被定义为NSDatehere

@property (nonatomic, strong) NSDate *date; 

在处理核心基础时,以这种形式进行强制转换的唯一情况是非弧形,如下所示:

CFDateRef asCFDate;
NSDate *asNSDate = (NSDate *) asCFDate;

但是,在ARC中,您将使用__bridge强制转换。

答案 1 :(得分:2)

演员阵容是不必要的,在我看来应该删除。

该属性已在数据模型对象上定义为NSDate(除非后面的步骤将其重新定义为id或其他内容,这是值得怀疑的)因此它没有提供额外的信息对代码或编译器的读者。