0

私はPSPDFkitのサンプルコードを見ていましたが、これを見ました:

NSDictionary *options = @{kPSPDFProcessorAnnotationTypes :
                               @(PSPDFAnnotationTypeNone & ~PSPDFAnnotationTypeLink)
                         };

定数PSPDFAnnotationTypeNonePSPDFAnnotationTypeLinkは以下に定義されています。

// Available keys for options. kPSPDFProcessorAnnotationDict in
// form of pageIndex -> annotations.
// ..
extern NSString *const kPSPDFProcessorAnnotationTypes;

// Annotations defined after the PDF standard.
typedef NS_OPTIONS(NSUInteger, PSPDFAnnotationType) {
    PSPDFAnnotationTypeNone      = 0,
    PSPDFAnnotationTypeLink      = 1 << 1,  // Links and multimedia extensions
    PSPDFAnnotationTypeHighlight = 1 << 2,  // (Highlight, Underline, StrikeOut) - 
    PSPDFAnnotationTypeText      = 1 << 3,  // FreeText
    PSPDFAnnotationTypeInk       = 1 << 4,
    PSPDFAnnotationTypeShape     = 1 << 5,  // Square, Circle
    PSPDFAnnotationTypeLine      = 1 << 6,
    PSPDFAnnotationTypeNote      = 1 << 7,
    PSPDFAnnotationTypeStamp     = 1 << 8,
    PSPDFAnnotationTypeRichMedia = 1 << 10, // Embedded PDF videos
    PSPDFAnnotationTypeScreen    = 1 << 11, // Embedded PDF videos
    PSPDFAnnotationTypeUndefined = 1 << 31, // any annotation whose type not recognized
    PSPDFAnnotationTypeAll       = UINT_MAX
};

~ビット単位の not 演算子とビット単位の and 演算子であることは理解して&いますが、このコードでそれらを適用する目的は何ですか?

NSDictionary *options = @{kPSPDFProcessorAnnotationTypes :
                               @(PSPDFAnnotationTypeNone & ~PSPDFAnnotationTypeLink)
                         };

以下のコメントに基づいて、上記は次のように簡単に記述できます。

NSDictionary *options = @{kPSPDFProcessorAnnotationTypes :@(PSPDFAnnotationTypeNone)};

と同じですから(0 & ~2) => 0& ~PSPDFAnnotationTypeLinkパーツを追加するポイントは何ですか?

4

3 に答える 3

2

「~」はビット単位の否定演算子です。

「&」としてビットごとのand .

これらは通常、ビットマスク(例のように)または他のバイナリ操作(名前が示すように)に使用されます。詳しくはwiki - Operators in C and C++ を参照してください。

リテラルとは関係ありません。

于 2013-04-17T06:30:05.517 に答える
0

まず、私は obj-c を知りません、C しか知りませんが、「&」は「ビットごとの AND」であり、「~」はビットごとの NOT だと思います。

于 2013-04-17T06:32:09.367 に答える