特に実装が隠されているSDKを扱う場合は、プログラミングにおいて100%安全です。私は定数についての同様の質問に答えたNSNotFound
here。
NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
は安全ですか?理想的には、AppleがSDKを変更しないことを選択した場合、またはNSCalendar
イニシャライザのバグのない実装を提供している場合です。防御コーディングが行われる限り、2つの選択肢があります。
ラップレオDabusはコメントで示唆されているようにguard
のコード:未来プルーフ用
guard let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian) else { return }
を、Appleが(NSNotFound
で見られるような) NSCalendarIdentifier
定数の可用性や実装を変更することがあります。さらに安全性を高めるために、定数のメモリ位置を確認します
if let str: String = NSCalendarIdentifierGregorian {
if let _: UnsafePointer<Void> = unsafeAddressOf(str) {
// NSCalendarIdentifierGregorian is defined on your platform
}
}
をそれだクリーナーのObjective-Cで少し:私はアップルでは動作しませんし、任意の財団の可用性を保証することはできません
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wtautological-compare"
BOOL found = (&NSCalendarIdentifierGregorian != NULL);
#pragma clang diagnostic pop
if (found) {
// safe
}
クラス。
出典
2016-04-24 21:09:24
JAL
「ガードレットcal = NSCalendar(calendarIdentifier:NSCalendarIdentifierGregorian)else {return}」 –
アプリではカレンダーを使って統計情報を計算しています(ユーザーには表示されません。アプリの最適化と解析)、正しいカレンダーが利用できない場合、それは問題です。私は決して気にしていないとは言えません。 – TimSim
ちょうど現在のカレンダーを使用してください –