我正在尝试创建一个布尔变量debugMode,并在几个不同的类中访问它。这样我可以在我的ViewController中设置它的值一次,并且能够在我的不同类(SKScene的子类)中访问它以显示帧速率,日志物理值等。
我读过我需要创建一个类的实例?我不知道这个程序是如何适用的。
我是objective-c的新手,非常感谢任何帮助!谢谢!
答案 0 :(得分:1)
默认解决方案是预处理器定义,默认情况下在xcode项目中设置。
所以,在源代码中你可以放
#ifdef DEBUG
// code that should only run in Debug Configuration
#endif
答案 1 :(得分:-2)
因此,如果我说得对,你想要一个给定类的实例,你可以在整个应用程序中使用它而不会丢失类的状态,但这应该只存在于代码的DEBUG
版本中?
好的,我们可以使用与#ifdef DEBUG
混合的Singleton Pattern来确定是否处于调试模式。
<强> DebugManager.h 强>
// Our Debug Class that we have just made up.
// Singleton class
@interface DebugManager : NSObject
// Some properties that we want on the class
@property (nonatomic, strong) NSString *debugName;
@property (nonatomic, readonly) NSDate *instanceCreatedOn;
// a method for us to get the shared instance of our class
+ (id)sharedDebugManager;
@end
<强> DebugManager.m 强>
#import "DebugManager.h"
@implementation DebugManager
// Create a shared instance of our class unless one exists already
+ (id)sharedDebugManager
{
static DebugManager *sharedDebugManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedDebugManager = [[self alloc] init];
});
return sharedDebugManager;
}
- (id)init
{
if (self = [super init]) {
debugName = @"Debug Instance";
instanceCreatedOn = [NSDate new];
}
return self;
}
@end
现在我们有一个Singleton类设置,我们可以在*-Prefix.pch
添加以下行,这将为我们提供一个我们可以在整个应用程序中使用的DebugManager
类的实例。
#ifdef DEBUG
DebugManager *manager = [DebugManager sharedDebugManager];
#endif
请记住,当您想要使用manager
实例时,需要将其包含在#ifdef DEBUG
中,因为在生产中运行时,将不会再看到manager
的实例。所以一定要确保:
#ifdef DEBUG
NSLog(@"The DebugManagers instance name is %@", [manager debugName]);
#endif
请勿忘记在Build Settings
关注this答案下的xcode中添加预处理器宏,以了解如何操作
如果您有任何问题,请在下面提问。