在Apple的私有头文件中提供Underscore的原因是什么?

Sag*_*ari 3 objective-c foundation

我见过许多苹果的.h(私人API).大多数变量/结构/枚举/类都有_作为前缀.

#import <Foundation/NSValue.h>
#import <Foundation/NSObjCRuntime.h>

@class NSString;

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;
Run Code Online (Sandbox Code Playgroud)

我的问题是,

用正确的方法再次给予下划线和打字的原因是什么?

Tec*_*Zen 7

Objective-C有一个全球开放的名称空间.所有名字都必须是独一无二的.除了之前给出的原因,Apple还为自己保留所有下划线名称.这有助于防止意外名称冲突.