p-x9/MachOObjCSection
GitHub: p-x9/MachOObjCSection
一个用于解析 Mach-O 文件以提取 Objective-C 类、协议和分类等元数据信息的 Swift 库。
Stars: 28 | Forks: 4
# MachOObjCSection
一个用于解析 mach-o 文件以获取 Objecteve-C 信息的 Swift 库。
(Class/Protocol/Category/Image 信息)
[](https://github.com/p-x9/MachOObjCSection/issues)
[](https://github.com/p-x9/MachOObjCSection/network/members)
[](https://github.com/p-x9/MachOObjCSection/stargazers)
[](https://github.com/p-x9/MachOObjCSection/)
## 用法
### 基础
可以通过 `objc` 属性从 MachOImage 或 MachOFile 中获取 Objective-C 信息。
名为 [ObjCSectionRepresentable](./Sources/MachOObjCSection/Protocol/ObjCSectionRepresentable.swift) 的协议包含了可以获取的 objc 信息。
```
import MachOKit
import MachOObjCSection
let machO //` MachOFile` or `MachOImage`
// image info
let imageInfo = machO.objc.imageInfo
// objc classes(64bit)
let classes = machO.objc.classes64
// objc classes(32bit)
let classes = machO.objc.classes32
// objc protocols(64bit)
let classes = machO.objc.protocols64
// objc protocols(32bit)
let classes = machO.objc.protocols32
// objc category(64bit)
let classes = machO.objc.categories64
// objc category(32bit)
let classes = machO.objc.categories32
```
### 详情
#### Class
关于 ObjC Class 可以获取的信息总结在 [ObjCClassProtocol](./Sources/MachOObjCSection/Protocol/Class/ObjCClassProtocol.swift) 中。
诸如类名和方法列表等详细信息可以从 ro(只读)数据中获取。
从内存中的 `MachOImage` 获取时,可能需要通过 rw(读写)数据或更进一步的 rw ext(读写扩展)数据来获取 ro 数据。
```
let roData: ClassROData
if let _data = classROData(in: machO) {
roData = _data
} else if let rw = classRWData(in: machO) {
if let _data = rw.classROData(in: machO) {
roData = _data
} else if let ext = rw.ext(in: machO),
let _data = ext.classROData(in: machO) {
roData = _data
}
}
```
例如,要获取实例属性列表,请编写
```
let instancePropertyList = roData.propertyList(in: machO)!
for property in instancePropertyList.properties(in: machO) {
print("Name: \(property.name), Attributes: \(property.attributes)")
}
```
要获取类属性或类方法列表,请使用元类(metaclass)。
```
let meta = cls.metaClass(in: machO)!
let roData: ClassROData64 = /* Get ro data from metaclass */
let classPropertyList = roData.propertyList(in: machO)!
for property in classPropertyList.properties(in: machO) {
print("Name: \(property.name), Attributes: \(property.attributes)")
}
```
#### Protocol
关于 ObjC Protocol 可以获取的信息总结在 [ObjCProtocolProtocol](./Sources/MachOObjCSection/Protocol/Protocol/ObjCProtocolProtocol.swift) 中。
#### Categories
关于 ObjC Category 可以获取的信息总结在 [ObjCCategoryProtocol](./Sources/MachOObjCSection/Protocol/Category/ObjCCategoryProtocol.swift) 中。
### 兼容 ObjCDump 库
它与定义了 ObjC 类等模型的 [ObjCDump](https://github.com/p-x9/swift-objc-dump) 库兼容。
可以通过 `info` 属性和方法转换为 ObjCDump 模型。
```
// property
let proeprtyInfo = property.info(isClassProperty: true)
// ivar
let ivarInfo = ivar.info(in: machO)
// method
let methodInfo = method.info(isClassMethod: true)
// class
let classInfo = cls.info(in: machO)
// protocol
let protocoInfo = proto.info(in: machO)
// category
let categoryInfo = category.info(in: machO)
```
#### 导出 ObjC Header
可以从属性/方法/ivar/类/协议/分类模型中获取 ObjC header 定义
```
// property
let header = propertyInfo.headerString
// ivar
let header = ivarInfo.headerString
// method
let header = methodInfo.headerString
// class
let header = classInfo.headerString
// protocol
let header = protocolInfo.headerString
// category
let header = categoryInfo.headerString
```
@property(class, readonly, copy) NSArray *readableTypeIdentifiersForItemProvider;
@property(class, readonly, copy) NSArray *writableTypeIdentifiersForItemProvider;
@property(class, readonly) BOOL supportsSecureCoding;
@property(readonly, nonatomic) NSAttributedString *__baseAttributedString;
@property(readonly) unsigned long long hash;
@property(readonly) Class superclass;
@property(readonly, copy) NSString *description;
@property(readonly, copy) NSString *debugDescription;
@property(readonly, copy) NSArray *writableTypeIdentifiersForItemProvider;
@property(readonly, copy) NSString *stringByRemovingPercentEncoding;
@property(readonly) unsigned long long length;
+ (id)allocWithZone:(struct _NSZone *)arg0;
+ (void)initialize;
+ (id)stringWithFormat:(id)arg0;
+ (id)stringWithUTF8String:(const char *)arg0;
+ (id)string;
+ (BOOL)_subclassesMustBeExplicitlyMentionedWhenDecoded;
+ (id)stringWithCharacters:(const unsigned short *)arg0 length:(unsigned long long)arg1;
+ (BOOL)supportsSecureCoding;
+ (id)stringWithCString:(const char *)arg0 encoding:(unsigned long long)arg1;
+ (id)stringWithString:(id)arg0;
+ (id)stringWithContentsOfFile:(id)arg0 encoding:(unsigned long long)arg1 error:(id *)arg2;
+ (id)stringWithContentsOfFile:(id)arg0 usedEncoding:(unsigned long long *)arg1 error:(id *)arg2;
+ (id)localizedStringWithValidatedFormat:(id)arg0 validFormatSpecifiers:(id)arg1 error:(id *)arg2;
+ (id)_newStringFromUTF16InternalData:(id)arg0 typeIdentifier:(id)arg1 error:(id *)arg2;
+ (id)_newZStringWithCharacters:(const unsigned short *)arg0 length:(unsigned long long)arg1;
+ (id)_newZStringWithString:(id)arg0;
+ (id)_newZStringWithUTF8String:(const char *)arg0;
+ (id)_scriptStringWithPropertyAccess:(unsigned long long)arg0;
+ (id)_scriptStringWithTabCount:(unsigned long long)arg0;
+ (id)_scriptingTextWithDescriptor:(id)arg0;
+ (id)_stringWithFormat:(id)arg0 locale:(id)arg1 options:(id)arg2 arguments:(char *)arg3;
+ (id)_web_stringRepresentationForBytes:(long long)arg0;
+ (const unsigned long long *)availableStringEncodings;
+ (unsigned long long)defaultCStringEncoding;
+ (id)localizedNameOfStringEncoding:(unsigned long long)arg0;
+ (id)localizedStringWithFormat:(id)arg0;
+ (id)objectWithItemProviderData:(id)arg0 typeIdentifier:(id)arg1 error:(id *)arg2;
+ (id)pathWithComponents:(id)arg0;
+ (id)readableTypeIdentifiersForItemProvider;
+ (unsigned long long)stringEncodingForData:(id)arg0 encodingOptions:(id)arg1 convertedString:(id *)arg2 usedLossyConversion:(BOOL *)arg3;
+ (id)stringWithBytes:(const void *)arg0 length:(unsigned long long)arg1 encoding:(unsigned long long)arg2;
+ (id)stringWithCString:(const char *)arg0;
+ (id)stringWithCString:(const char *)arg0 length:(unsigned long long)arg1;
+ (id)stringWithContentsOfFile:(id)arg0;
+ (id)stringWithContentsOfURL:(id)arg0;
+ (id)stringWithContentsOfURL:(id)arg0 encoding:(unsigned long long)arg1 error:(id *)arg2;
+ (id)stringWithContentsOfURL:(id)arg0 usedEncoding:(unsigned long long *)arg1 error:(id *)arg2;
+ (id)stringWithFormat:(id)arg0 locale:(id)arg1;
+ (id)stringWithValidatedFormat:(id)arg0 validFormatSpecifiers:(id)arg1 error:(id *)arg2;
+ (id)writableTypeIdentifiersForItemProvider;
- (id)copyWithZone:(struct _NSZone *)arg0;
- (id)description;
- (unsigned long long)hash;
- (id)init;
- (BOOL)isEqual:(id)arg0;
- (id)mutableCopyWithZone:(struct _NSZone *)arg0;
- (const char *)UTF8String;
- (id)initWithUTF8String:(const char *)arg0;
- (const char *)_fastCStringContents:(BOOL)arg0;
- (double)doubleValue;
- (float)floatValue;
- (BOOL)getBytes:(void *)arg0 maxLength:(unsigned long long)arg1 usedLength:(unsigned long long *)arg2 encoding:(unsigned long long)arg3 options:(unsigned long long)arg4 range:(_NSRange)arg5 remainingRange:(struct _NSRange { unsigned long long x0; unsigned long long x1; } *)arg6;
- (id)initWithFormat:(id)arg0 arguments:(char *)arg1;
- (int)intValue;
- (BOOL)isNSString__;
- (unsigned long long)length;
- (unsigned long long)lengthOfBytesUsingEncoding:(unsigned long long)arg0;
- (long long)longLongValue;
- (const char *)cString;
- (unsigned long long)fastestEncoding;
- (id)initWithString:(id)arg0;
- (BOOL)_getCString:(char *)arg0 maxLength:(unsigned long long)arg1 encoding:(unsigned int)arg2;
- (unsigned long long)_cfTypeID;
- (id)_copyFormatStringWithConfiguration:(id)arg0;
- (id)_createSubstringWithRange:(_NSRange)arg0;
- (BOOL)_encodingCantBeStoredInEightBitCFString;
- (const unsigned short *)_fastCharacterContents;
- (unsigned int)_fastestEncodingInCFStringEncoding;
- (BOOL)_isCString;
- (id)_newSubstringWithRange:(_NSRange)arg0 zone:(struct _NSZone *)arg1;
- (unsigned int)_pathResolveFlags;
- (unsigned int)_queryResolveFlags;
- (unsigned int)_smallestEncodingInCFStringEncoding;
- (id)_stringRepresentation;
- (id)_urlStringByInsertingPathResolveFlags:(unsigned int)arg0;
- (id)_urlStringByInsertingQueryResolveFlags:(unsigned int)arg0;
- (id)_urlStringByRemovingResolveFlags;
- (BOOL)boolValue;
- (unsigned long long)cStringLength;
- (const char *)cStringUsingEncoding:(unsigned long long)arg0;
- (unsigned short)characterAtIndex:(unsigned long long)arg0;
- (Class)classForCoder;
- (long long)compare:(id)arg0;
- (long long)compare:(id)arg0 options:(unsigned long long)arg1 range:(_NSRange)arg2 locale:(id)arg3;
- (id)dataUsingEncoding:(unsigned long long)arg0 allowLossyConversion:(BOOL)arg1;
- (void)encodeWithCoder:(id)arg0;
- (const char *)fileSystemRepresentation;
- (id)formatConfiguration;
- (BOOL)getCString:(char *)arg0 maxLength:(unsigned long long)arg1 encoding:(unsigned long long)arg2;
- (void)getCharacters:(unsigned short *)arg0 range:(_NSRange)arg1;
- (BOOL)getFileSystemRepresentation:(char *)arg0 maxLength:(unsigned long long)arg1;
- (void)getLineStart:(unsigned long long *)arg0 end:(unsigned long long *)arg1 contentsEnd:(unsigned long long *)arg2 forRange:(_NSRange)arg3;
- (void)getParagraphStart:(unsigned long long *)arg0 end:(unsigned long long *)arg1 contentsEnd:(unsigned long long *)arg2 forRange:(_NSRange)arg3;
- (BOOL)hasPrefix:(id)arg0;
- (BOOL)hasSuffix:(id)arg0;
- (id)initWithCoder:(id)arg0;
- (id)initWithContentsOfFile:(id)arg0;
- (id)initWithContentsOfURL:(id)arg0;
- (long long)integerValue;
- (BOOL)isEqualToString:(id)arg0;
- (id)lowercaseStringWithLocale:(id)arg0;
- (_NSRange)rangeOfCharacterFromSet:(id)arg0 options:(unsigned long long)arg1 range:(_NSRange)arg2;
- (unsigned long long)smallestEncoding;
- (id)substringFromIndex:(unsigned long long)arg0;
- (id)substringWithRange:(_NSRange)arg0;
- (id)uppercaseStringWithLocale:(id)arg0;
- (BOOL)containsString:(id)arg0;
- (id)initWithFormat:(id)arg0;
- (id)stringByAppendingPathComponent:(id)arg0;
- (id)lowercaseString;
- (id)stringByAppendingPathExtension:(id)arg0;
- (id)capitalizedString;
- (long long)caseInsensitiveCompare:(id)arg0;
- (long long)compare:(id)arg0 options:(unsigned long long)arg1;
- (id)componentsSeparatedByString:(id)arg0;
- (id)dataUsingEncoding:(unsigned long long)arg0;
- (id)initWithBytesNoCopy:(void *)arg0 length:(unsigned long long)arg1 encoding:(unsigned long long)arg2 freeWhenDone:(BOOL)arg3;
- (id)initWithCString:(const char *)arg0 encoding:(unsigned long long)arg1;
- (id)initWithCString:(const char *)arg0 length:(unsigned long long)arg1;
- (id)initWithCharacters:(const unsigned short *)arg0 length:(unsigned long long)arg1;
- (id)initWithData:(id)arg0 encoding:(unsigned long long)arg1;
- (id)lastPathComponent;
- (long long)localizedStandardCompare:(id)arg0;
- (id)pathComponents;
- (id)pathExtension;
- (id)propertyList;
- (_NSRange)rangeOfCharacterFromSet:(id)arg0;
- (_NSRange)rangeOfCharacterFromSet:(id)arg0 options:(unsigned long long)arg1;
- (_NSRange)rangeOfString:(id)arg0;
- (_NSRange)rangeOfString:(id)arg0 options:(unsigned long long)arg1;
- (_NSRange)rangeOfString:(id)arg0 options:(unsigned long long)arg1 range:(_NSRange)arg2;
- (id)stringByAppendingFormat:(id)arg0;
- (id)stringByAppendingString:(id)arg0;
- (id)stringByApplyingTransform:(id)arg0 reverse:(BOOL)arg1;
- (id)stringByDeletingLastPathComponent;
- (id)stringByDeletingPathExtension;
- (id)stringByExpandingTildeInPath;
- (id)stringByReplacingCharactersInRange:(_NSRange)arg0 withString:(id)arg1;
- (id)stringByReplacingOccurrencesOfString:(id)arg0 withString:(id)arg1;
- (id)substringToIndex:(unsigned long long)arg0;
- (id)stringByPaddingToLength:(unsigned long long)arg0 withString:(id)arg1 startingAtIndex:(unsigned long long)arg2;
- (id)stringByStandardizingPath;
- (id)uppercaseString;
- (id)componentsSeparatedByCharactersInSet:(id)arg0;
- (void)enumerateSubstringsInRange:(_NSRange)arg0 options:(unsigned long long)arg1 usingBlock:(id /* block */)arg2;
- (void)getCharacters:(unsigned short *)arg0;
- (id)initWithContentsOfFile:(id)arg0 encoding:(unsigned long long)arg1 error:(id *)arg2;
- (_NSRange)rangeOfComposedCharacterSequenceAtIndex:(unsigned long long)arg0;
- (id)stringByReplacingOccurrencesOfString:(id)arg0 withString:(id)arg1 options:(unsigned long long)arg2 range:(_NSRange)arg3;
- (id)stringByTrimmingCharactersInSet:(id)arg0;
- (BOOL)writeToFile:(id)arg0 atomically:(BOOL)arg1;
- (id)_initWithFormat:(id)arg0 locale:(id)arg1 options:(id)arg2;
- (id)_web_parseAsKeyValuePair_nowarn;
- (id)commonPrefixWithString:(id)arg0 options:(unsigned long long)arg1;
- (_NSRange)localizedStandardRangeOfString:(id)arg0;
- (BOOL)matchesPattern:(id)arg0 caseInsensitive:(BOOL)arg1;
- (id)__baseAttributedString;
- (id)__escapeString5991;
- (BOOL)__oldnf_containsChar:(BOOL)arg0;
- (void)__oldnf_copyToUnicharBuffer:(unsigned short * *)arg0 saveLength:(long long *)arg1;
- (BOOL)__swiftFillFileSystemRepresentationWithPointer:(char *)arg0 maxLength:(long long)arg1;
- (_NSRange)significantText;
- (id)stringByResolvingSymlinksInPath;
- (id)_initWithDataOfUnknownEncoding:(id)arg0;
- (id)_web_stringByTrimmingWhitespace;
- (BOOL)isLike:(id)arg0;
- (BOOL)matchesPattern:(id)arg0;
- (id)__oldnf_componentsSeparatedBySet:(id)arg0;
- (BOOL)__oldnf_containsCharFromSet:(id)arg0;
- (BOOL)__oldnf_containsString:(id)arg0;
- (id)__oldnf_stringWithSeparator:(unsigned short)arg0 atFrequency:(long long)arg1;
- (id)stringByRemovingPercentEncoding;
- (BOOL)_allowsDirectEncoding;
- (id)_componentsSeparatedByCharactersInSet:(struct __CFCharacterSet *)arg0;
- (void)_flushRegularExpressionCaches;
- (void)_getBlockStart:(unsigned long long *)arg0 end:(unsigned long long *)arg1 contentsEnd:(unsigned long long *)arg2 forRange:(_NSRange)arg3 stopAtLineSeparators:(BOOL)arg4;
- (id)_getBracketedStringFromBuffer:(struct _NSStringBuffer { unsigned long long x0; unsigned long long x1; id x2; unsigned long long x3; unsigned long long x4; unsigned short[32] x5; unsigned short x6; unsigned short x7; } *)arg0 string:(id)arg1;
- (BOOL)_getBytesAsData:(id *)arg0 maxLength:(unsigned long long)arg1 usedLength:(unsigned long long *)arg2 encoding:(unsigned long long)arg3 options:(unsigned long long)arg4 range:(_NSRange)arg5 remainingRange:(struct _NSRange { unsigned long long x0; unsigned long long x1; } *)arg6;
- (id)_getCharactersAsStringInRange:(_NSRange)arg0;
- (id)_initWithBytesOfUnknownEncoding:(char *)arg0 length:(unsigned long long)arg1 copy:(BOOL)arg2 usedEncoding:(unsigned long long *)arg3;
- (id)_initWithFormat:(id)arg0 locale:(id)arg1 options:(id)arg2 arguments:(char *)arg3;
- (id)_initWithFormat:(id)arg0 options:(id)arg1;
- (id)_initWithFormat:(id)arg0 options:(id)arg1 arguments:(char *)arg2;
- (id)_initWithValidatedFormat:(id)arg0 validFormatSpecifiers:(id)arg1 locale:(id)arg2 options:(id)arg3 error:(id *)arg4;
- (id)_initWithValidatedFormat:(id)arg0 validFormatSpecifiers:(id)arg1 locale:(id)arg2 options:(id)arg3 error:(id *)arg4 arguments:(char *)arg5;
- (id)_initWithValidatedFormat:(id)arg0 validFormatSpecifiers:(id)arg1 options:(id)arg2 error:(id *)arg3;
- (id)_initWithValidatedFormat:(id)arg0 validFormatSpecifiers:(id)arg1 options:(id)arg2 error:(id *)arg3 arguments:(char *)arg4;
- (BOOL)_matchesCharacter:(unsigned short)arg0;
- (_NSRange)_rangeOfCharacterFromSet:(struct __CFCharacterSet *)arg0 options:(unsigned long long)arg1 range:(_NSRange)arg2;
- (_NSRange)_rangeOfRegularExpressionPattern:(id)arg0 options:(unsigned long long)arg1 range:(_NSRange)arg2 locale:(id)arg3;
- (int)_scriptingAlternativeValueRankWithDescriptor:(id)arg0;
- (id)_scriptingTextDescriptor;
- (id)_stringByAddingPercentEncodingWithAllowedCharacters:(struct __CFCharacterSet *)arg0;
- (id)_stringByReplacingOccurrencesOfRegularExpressionPattern:(id)arg0 withTemplate:(id)arg1 options:(unsigned long long)arg2 range:(_NSRange)arg3;
- (id)_stringByResolvingSymlinksInPathUsingCache:(BOOL)arg0;
- (id)_stringByStandardizingPathUsingCache:(BOOL)arg0;
- (id)_stringByTrimmingCharactersInSet:(struct __CFCharacterSet *)arg0;
- (id)_web_HTTPStyleLanguageCode;
- (id)_web_HTTPStyleLanguageCodeWithoutRegion;
- (id)_web_URLFragment;
- (id)_web_characterSetFromContentTypeHeader_nowarn;
- (long long)_web_countOfString:(id)arg0;
- (id)_web_domainFromHost;
- (BOOL)_web_domainMatches:(id)arg0;
- (unsigned int)_web_extractFourCharCode;
- (id)_web_fileNameFromContentDispositionHeader_nowarn;
- (id)_web_filenameByFixingIllegalCharacters;
- (id)_web_fixedCarbonPOSIXPath;
- (BOOL)_web_hasCaseInsensitivePrefix:(id)arg0;
- (BOOL)_web_hasCountryCodeTLD;
- (BOOL)_web_isCaseInsensitiveEqualToString:(id)arg0;
- (BOOL)_web_isFileURL;
- (BOOL)_web_isJavaScriptURL;
- (BOOL)_web_looksLikeAbsoluteURL;
- (BOOL)_web_looksLikeIPAddress;
- (id)_web_mimeTypeFromContentTypeHeader_nowarn;
- (id)_web_parseAsKeyValuePairHandleQuotes_nowarn:(BOOL)arg0;
- (_NSRange)_web_rangeOfURLHost;
- (_NSRange)_web_rangeOfURLResourceSpecifier_nowarn;
- (_NSRange)_web_rangeOfURLScheme_nowarn;
- (_NSRange)_web_rangeOfURLUserPasswordHostPort;
- (id)_web_splitAtNonDateCommas_nowarn;
- (id)_web_stringByCollapsingNonPrintingCharacters;
- (id)_web_stringByExpandingTildeInPath;
- (id)_web_stringByReplacingValidPercentEscapes_nowarn;
- (id)_widthVariants;
- (BOOL)canBeConvertedToEncoding:(unsigned long long)arg0;
- (id)capitalizedStringWithLocale:(id)arg0;
- (long long)compare:(id)arg0 options:(unsigned long long)arg1 range:(_NSRange)arg2;
- (unsigned long long)completePathIntoString:(id *)arg0 caseSensitive:(BOOL)arg1 matchesIntoArray:(id *)arg2 filterTypes:(id)arg3;
- (struct { int x0 : 8; int x1 : 4; int x2 : 1; int x3 : 1; int x4 : 18; unsigned short[8] x5; })decimalValue;
- (id)decomposedStringWithCanonicalMapping;
- (id)decomposedStringWithCompatibilityMapping;
- (id)displayableString;
- (void)enumerateLinesUsingBlock:(id /* block */)arg0;
- (void)enumerateLinguisticTagsInRange:(_NSRange)arg0 scheme:(id)arg1 options:(unsigned long long)arg2 orthography:(id)arg3 usingBlock:(id /* block */)arg4;
- (BOOL)getBytes:(char *)arg0 maxLength:(unsigned long long)arg1 filledLength:(unsigned long long *)arg2 encoding:(unsigned long long)arg3 allowLossyConversion:(BOOL)arg4 range:(_NSRange)arg5 remainingRange:(struct _NSRange { unsigned long long x0; unsigned long long x1; } *)arg6;
- (void)getCString:(char *)arg0;
- (void)getCString:(char *)arg0 maxLength:(unsigned long long)arg1;
- (void)getCString:(char *)arg0 maxLength:(unsigned long long)arg1 range:(_NSRange)arg2 remainingRange:(struct _NSRange { unsigned long long x0; unsigned long long x1; } *)arg3;
- (BOOL)getExternalRepresentation:(id *)arg0 extendedAttributes:(id *)arg1 forWritingToURLOrPath:(id)arg2 usingEncoding:(unsigned long long)arg3 error:(id *)arg4;
- (id)initWithBytesNoCopy:(void *)arg0 length:(unsigned long long)arg1 encoding:(unsigned long long)arg2 deallocator:(id /* block */)arg3;
- (id)initWithCString:(const char *)arg0;
- (id)initWithCStringNoCopy:(char *)arg0 length:(unsigned long long)arg1 freeWhenDone:(BOOL)arg2;
- (id)initWithCharactersNoCopy:(unsigned short *)arg0 length:(unsigned long long)arg1 deallocator:(id /* block */)arg2;
- (id)initWithCharactersNoCopy:(unsigned short *)arg0 length:(unsigned long long)arg1 freeWhenDone:(BOOL)arg2;
- (id)initWithContentsOfFile:(id)arg0 usedEncoding:(unsigned long long *)arg1 error:(id *)arg2;
- (id)initWithContentsOfURL:(id)arg0 encoding:(unsigned long long)arg1 error:(id *)arg2;
- (id)initWithContentsOfURL:(id)arg0 usedEncoding:(unsigned long long *)arg1 error:(id *)arg2;
- (id)initWithData:(id)arg0 usedEncoding:(unsigned long long *)arg1;
- (id)initWithFormat:(id)arg0 locale:(id)arg1;
- (id)initWithFormat:(id)arg0 locale:(id)arg1 arguments:(char *)arg2;
- (id)initWithValidatedFormat:(id)arg0 validFormatSpecifiers:(id)arg1 arguments:(char *)arg2 error:(id *)arg3;
- (id)initWithValidatedFormat:(id)arg0 validFormatSpecifiers:(id)arg1 error:(id *)arg2;
- (id)initWithValidatedFormat:(id)arg0 validFormatSpecifiers:(id)arg1 locale:(id)arg2 arguments:(char *)arg3 error:(id *)arg4;
- (id)initWithValidatedFormat:(id)arg0 validFormatSpecifiers:(id)arg1 locale:(id)arg2 error:(id *)arg3;
- (BOOL)isAbsolutePath;
- (BOOL)isCaseInsensitiveLike:(id)arg0;
- (_NSRange)lineRangeForRange:(_NSRange)arg0;
- (id)linguisticTagsInRange:(_NSRange)arg0 scheme:(id)arg1 options:(unsigned long long)arg2 orthography:(id)arg3 tokenRanges:(id *)arg4;
- (id)loadDataWithTypeIdentifier:(id)arg0 forItemProviderCompletionHandler:(id /* block */)arg1;
- (id)localizedCapitalizedString;
- (long long)localizedCaseInsensitiveCompare:(id)arg0;
- (BOOL)localizedCaseInsensitiveContainsString:(id)arg0;
- (long long)localizedCompare:(id)arg0;
- (BOOL)localizedHasPrefix:(id)arg0;
- (BOOL)localizedHasSuffix:(id)arg0;
- (id)localizedLowercaseString;
- (BOOL)localizedStandardContainsString:(id)arg0;
- (id)localizedUppercaseString;
- (const char *)lossyCString;
- (unsigned long long)maximumLengthOfBytesUsingEncoding:(unsigned long long)arg0;
- (_NSRange)paragraphRangeForRange:(_NSRange)arg0;
- (id)precomposedStringWithCanonicalMapping;
- (id)precomposedStringWithCompatibilityMapping;
- (id)propertyListFromStringsFileFormat;
- (id)quotedStringRepresentation;
- (_NSRange)rangeOfComposedCharacterSequencesForRange:(_NSRange)arg0;
- (_NSRange)rangeOfString:(id)arg0 options:(unsigned long long)arg1 range:(_NSRange)arg2 locale:(id)arg3;
- (id)replacementObjectForPortCoder:(id)arg0;
- (BOOL)scriptingBeginsWith:(id)arg0;
- (BOOL)scriptingContains:(id)arg0;
- (BOOL)scriptingEndsWith:(id)arg0;
- (BOOL)scriptingIsEqualTo:(id)arg0;
- (BOOL)scriptingIsGreaterThan:(id)arg0;
- (BOOL)scriptingIsGreaterThanOrEqualTo:(id)arg0;
- (BOOL)scriptingIsLessThan:(id)arg0;
- (BOOL)scriptingIsLessThanOrEqualTo:(id)arg0;
- (id)standardizedURLPath;
- (id)stringByAbbreviatingWithTildeInPath;
- (id)stringByAddingPercentEncodingWithAllowedCharacters:(id)arg0;
- (id)stringByAddingPercentEscapes;
- (id)stringByAddingPercentEscapesUsingEncoding:(unsigned long long)arg0;
- (id)stringByConvertingPathToURL;
- (id)stringByConvertingURLToPath;
- (id)stringByFoldingWithOptions:(unsigned long long)arg0 locale:(id)arg1;
- (id)stringByRemovingPercentEscapes;
- (id)stringByReplacingPercentEscapesUsingEncoding:(unsigned long long)arg0;
- (id)stringMarkingUpcaseTransitionsWithDelimiter2:(id)arg0;
- (id)stringsByAppendingPaths:(id)arg0;
- (id)variantFittingPresentationWidth:(long long)arg0;
- (id)writableTypeIdentifiersForItemProvider;
- (BOOL)writeToFile:(id)arg0 atomically:(BOOL)arg1 encoding:(unsigned long long)arg2 error:(id *)arg3;
- (BOOL)writeToURL:(id)arg0 atomically:(BOOL)arg1;
- (BOOL)writeToURL:(id)arg0 atomically:(BOOL)arg1 encoding:(unsigned long long)arg2 error:(id *)arg3;
@end
```
## 许可证
MachOObjCSection 在 MIT 许可证下发布。请参阅 [LICENSE](./LICENSE)
导出的 header 字符串示例
``` @interface NSString : NSObject标签:CVE监控, Mach-O, Objective-C, Swift, 云安全监控, 底层开发, 解析库, 静态分析