0

ドキュメントを見る: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/Reference/Reference.html

NSDataWritingFileProtectionCompleteは「OS X v10.8 以降で使用可能」ですが、コードで使用しようとするとコンパイル エラーが発生します。NSData ヘッダーを確認すると、この機能は iOS でのみ使用できることがわかります。

NSDataWritingFileProtectionComplete NS_ENUM_AVAILABLE_IOS(4_0)

私は何か間違っていますか、それともドキュメントが間違っていますか?

4

1 に答える 1

2

MacOS 10.8 SDK で定義されている列挙型を見ると、次のことがわかります。

typedef NS_OPTIONS(NSUInteger, NSDataWritingOptions) {
    NSDataWritingAtomic = 1UL << 0, // Hint to use auxiliary file when saving; equivalent to atomically:YES
    NSDataWritingWithoutOverwriting NS_ENUM_AVAILABLE(10_8, 6_0) = 1UL << 1, // Hint to return prevent overwriting an existing file. Cannot be combined with NSDataWritingAtomic.

    NSDataWritingFileProtectionNone NS_ENUM_AVAILABLE_IOS(4_0)                                  = 0x10000000,
    NSDataWritingFileProtectionComplete NS_ENUM_AVAILABLE_IOS(4_0)                              = 0x20000000,

" NS_ENUM_AVAILABLE_IOS" は展開されるマクロです。

 #define NS_ENUM_AVAILABLE_IOS(_ios) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_##_ios)

" __MAC_NA" ビットは「該当なし」を意味します。これは、ドキュメントが現在間違っていることを意味します。この機能は iOS でのみ使用できます。

これについては、Apple にドキュメンテーション バグを報告する必要があります。

于 2013-01-11T09:20:04.687 に答える