2010-04-27 114 views
0

我在global.h文件中定义了一个全局变量标志,当我点击下一个标签栏然后我无法访问标志值。我想要一个全局变量为所有tabs.please建议我。全局变量问题

回答

0

您是否已将此文件包含到您想要使用此标志的位置?

+0

我包含文件。 – user313396 2010-04-28 05:35:10

+0

你可以提供你的代码从你的global.h – Skie 2010-04-28 07:10:44

5

如果你想有一个全局变量,这里有一些选项,你可以尝试:

1)global.h定义静态变量。例如。你想有一个NSString的全局变量,声明在global.h如下:

@interface global : NSObject { 

} 
+(NSString*)MY_STR; 

@end 

然后实现它global.m为静态:

static NSString* MY_STR; 

@implementation global 

+(void) initialize 
{ 

MY_STR = @"global string";  

} 

+(NSString*)MY_STR{ 
    return MY_STR; 
} 

然后在任何类需要这个变量,你可以导入global.h和如下访问:

[global MY_STR]; 

2)在此方法中,定义了一个单独的类并使用其属性。 您可以创建全局为单例类。在global.h声明静态getInstance方法:

@interface global : NSObject{ 
    NSString *MY_STR; 
} 
@property(nonatomic, retain) NSString *MY_STR; 
+(global*)getInstance; 
@end 

在global.m,声明静态sharedInstance:

@implementation global 

@synthesize MY_STR; 

static global *g; 

+(global*)getInstance{ 
    @synchronized([global class]){ 
     if(g == nil){ 
      g = [[global alloc] init]; 
     } 
    } 
    return g; 
} 

@end 

在需要访问MY_STR,进口global.h写任何类以下内容:

global *g1= [global getInstance]; 
g1.MY_STR; 

3)第三种方法是在应用程序委托声明变量和访问它们。

0

对每个选项卡的点击事件使用Getter和Setter方法。在任何其他的.m或global.m

int flat; 

在global.h

extern int flag; 

-(void)setTitle:(NSString *)newTitle { 

    if (instanceVar != newTitle) { 
    [instanceVar release]; 
    instanceVar = [newTitle copy]; 
    // or retain, depending on object & usage 
    } 
} 


-(NSString *)title { 

     return [[instanceVar retain] autorelease]; 
    } 
+0

如何使用tis。 – user313396 2010-04-28 05:35:39

+0

使用+符号代替 - 用于全局目的,并设置像这样的值:[className setTitle:@“abc”];并在整个应用程序中使用[classname title];方法。 – 2011-11-04 10:56:36

2

用于(未目标)C的方法。 c

#import "global.h" 

flag = 123; // set 
int abc = flag; // get