4

私は Apple の「Your Second IOS App」チュートリアル」に取り組んできましたが、日付文字列を生成するために を使用するたびにNSDateFormatter、入力日付オブジェクトをキャストする必要があることに気付きました。

例 (ページ- 「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オブジェクトであることを知っています。

だから、チュートリアルが常に入力をキャストするのはなぜだろうと思っていました.これを行うことを推奨する何らかの目的のc規則またはフレームワークの規則はありますか? もしそうなら、なぜですか?

4

2 に答える 2

4

それは必要はありません。NSDateプロパティは既に a として定義されているため、キャストはわかりやすくするためのものです

@property (nonatomic, strong) NSDate *date; 

その形式でキャストが必要になる唯一の状況は、次のように、コア ファンデーションを扱うときに非アークのいずれかになります。

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

ただし、ARC__bridgeでは代わりにキャストを使用します。

于 2012-04-16T14:58:14.450 に答える
2

キャストは不要であり、私の意見では削除する必要があります。

プロパティはNSDate、データ モデル オブジェクト上で既に定義されているため (疑わしい何かに再定義する後の手順がない限りid)、コードやコンパイラの読者に追加情報を提供していません。

于 2012-04-16T14:58:31.733 に答える