如何在Xcode中声明一个全局变量,它的数据类型应该是整数,并且每个类都可以访问。
答案 0 :(得分:4)
在一些非常特殊的情况下,真正的全局变量可以简化事情。我认为你没有详尽地研究这个问题,但无论如何,这是我的答案,一个简单的案例:
// Globals.h
#ifndef Globals_h
#define Globals_h
extern NSInteger globalVariable;
#endif
// main.m
NSInteger globalVariable;
int main(int argc, char *argv[])
{
globalVariable = <# initial value #>;
...
}
// Prefix.pch
#ifdef __OBJC__
#import
#import <Foundation/Foundation.h>
#import "Globals.h"
#endif
现在,您可以在代码中的任何位置使用globalVariable
,甚至不需要包含头文件。
警告:如果您需要线程安全或不同的变量类型,事情会稍微复杂。
答案 1 :(得分:-2)
您可以在AppDelegate中使用全局变量:
@interface myAppDelegate : NSObject <UIApplicationDelegate> {
MyDBManager *myDBManager;
}
@property (nonatomic, retain) MyDBManager *myDBManager;
@end
@interface AnyOtherClass : UITableViewController {
MyDBManager *myDBManager;
NSObject *otherVar;
}
@property (nonatomic,retain) MyDBManager *myDBManager;
@property (nonatomic,retain) NSObject *otherVar;
@end
//getting the data from "global" myDBManager and putting it into local var of AnyOtherClass
- (void)viewWillAppear:(BOOL)animated {
//get the myDBManager global Object
MyAppDelegate *mainDelegate = (MyAppDelegate *)[[UIApplication sharedApplication]delegate];
myDBManager = mainDelegate.myDBManager;
}
- (void)dealloc {
[otherVar release];
//[dancesDBManager release]; DO NOT RELEASE THIS SINCE ITS USED AS A GLOBAL VARIABLE!
[super dealloc];
}
希望它会有所帮助