我的ObjC静态类在内存中有两个实例?

时间:2017-01-19 17:26:49

标签: objective-c static static-methods

我有一个静态类,有两个方法来设置一个静态整数值。出于某种原因,当从我的代码的不同部分调用它时,似乎分配了两个内存实例。

代码:

MyLogger.h

@interface MyLogger : NSObject

+ (NSUInteger)loggingLevel;
+ (void)setLoggingLevel:(NSUInteger)loggingLevel;

@end

MyLogger.m

#import "MyLogger.h"

static NSUInteger myLoggingLevel = 0;

@implementation MyLogger

+ (NSUInteger)loggingLevel { 
    return myLoggingLevel; 
}

+ (void)setLoggingLevel:(NSUInteger)loggingLevel { 
    myLoggingLevel = loggingLevel;
}

@end

当我从代码的不同部分设置和访问无符号整数值时,它具有不同的值和内存地址。

断点A的一些示例调试器输出:

(lldb) p myLoggingLevel
(NSUInteger) $1 = 32768
(lldb) p &myLoggingLevel
(NSUInteger *) $2 = 0x0000000110a57480

从断点B:

(lldb) p myLoggingLevel
(NSUInteger) $3 = 0
(lldb) p &myLoggingLevel
(NSUInteger *) $4 = 0x000000010f4733a8

0 个答案:

没有答案