2010-04-27 115 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