我看PSPDFkit示例代碼,看到這一點:在這段代碼中如何使用按位運算符?
NSDictionary *options = @{kPSPDFProcessorAnnotationTypes :
@(PSPDFAnnotationTypeNone & ~PSPDFAnnotationTypeLink)
};
常數PSPDFAnnotationTypeNone
和PSPDFAnnotationTypeLink
定義如下:
// 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
};
我明白~
是按位不是運營商和&
按位與運算符,但在這段代碼中他們的應用程序的目的是什麼?
NSDictionary *options = @{kPSPDFProcessorAnnotationTypes :
@(PSPDFAnnotationTypeNone & ~PSPDFAnnotationTypeLink)
};
基於下面的註釋,上面本來是簡單地寫爲
NSDictionary *options = @{kPSPDFProcessorAnnotationTypes :@(PSPDFAnnotationTypeNone)};
既然是一樣的(0 & ~2) => 0
。添加& ~PSPDFAnnotationTypeLink
部分有什麼意義?
在這個代碼的上下文中,它似乎是一個混淆的方式獲得0:'(0&〜2)'=> 0 –
所以寫額外的'&〜2'的值是多少?爲什麼不把'0'? – abbood
我不知道...會投票重新開放是關於爲什麼重點的問題。 –