AFNetworking 的源码中有这么一句代码:

1
static void *AFHTTPRequestSerializerObserverContext = &AFHTTPRequestSerializerObserverContext;

我们进行一个简单的测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
static void *XYZ = &XYZ;

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

NSLog(@"%ld -- %p --- %lu", (long)XYZ, XYZ, sizeof(XYZ));
}

@end

// 4351100200 -- 0x103588528 --- 8

由上述Log得知:0x103588528 的 十进制其实就是 4351100200,

  • XYZ 的地址是: 0x103588528;
  • XYZ 的值是:4351100200;
  • 0x103588528 对应的十进制就是 4351100200;

static void *XYZ = &XYZ;

  • &XYZ 是一个内存地址,指向XYZ的指针;
  • void * 是一个无类型指针, 即:该指针指向XYZ的内存地址(指针);

So, XYZ 为一个指向指针(&XYZ)的指针(void *无类型指针)