Я объявляю персональный ключ в файле .h в классе person. , Напечатать адрес персонального ключа в методе singleton-файла Person
#import <Foundation/Foundation.h>
static const void* personKey = &personKey;
@interface Person : NSObject
+(instancetype)sharedPerson;
@end
#import "Person.h"
@implementation Person
static Person *_person;
+ (instancetype)sharedPerson
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_person = [[self alloc] init];
printf("personkey111 = %p\n",personKey);
});
return _person;
}
@end
но когда я печатаю его в другом классе, адрес изменился.
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
Person *p = [Person sharedPerson];
printf("personKey222 = %p,",personKey);
}
вот мой вывод
personkey111 = 0x10c70c0e8
personKey222 = 0x10c70c0e0,