NSUUID クラスがあります (宣言と実装を提供します)。iOS6.0までは問題なく使えました。Apple が廃止するずっと前に禁止されていたため、実装しましUIDevice uniqueIdentifier
た。NSUUID を返すことは自然な選択でした。
iOS 6.0 では、Apple が同じクラスを導入したため、定義を保護する必要がありました。
#if __IPHONE_OS_VERSION_MAX_ALLOWED <= __IPHONE_5_1
@interface NSUUID : NSObject {
...
}
#endif
iOS 5.1 以前は壊れています。iOS 5.1 では、 のnil
後に戻りalloc/init
ます。
を削除しようとしました#if/#end
が、最新の iPhone SDK を使用すると名前が重複します。
Apple に安定した API がないのはバグであり、機能ではありません。この「実行時に試してみる」がらくたはそれをカットしていません。これにより、整合性の高いソフトウェアを作成することが非常に困難になります。
以下の Tommy の回答から、Apple のツールチェーンに NSUUID の実装を常に使用するように指示することはできません。iOS 5.1 以前 (最新の SDK を使用してコンパイルされている可能性があります) 用の NSUUID の実装を提供するにはどうすればよいですか?