天道酬勤,学无止境

全局变量问题(Global Variable problem)

问题

我在 global.h 文件中定义了一个全局变量标志,当我单击下一个标签栏时,我无法访问标志值。我想要一个所有标签的全局变量。请建议我。

回答1

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

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)第三种方法是在应用程序委托中声明变量并访问它们。

回答2

对于(非客观的)c 方法:

在 global.h

extern int flag;

在 global.m

int flat;

在任何其他 .m 或 .c

#import "global.h"

flag = 123; // set
int abc = flag; // get
回答3

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

回答4

对每个 Tab 的点击事件使用 Getter 和 Setter 方法。

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

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


 -(NSString *)title {

       return [[instanceVar retain] autorelease];
     }

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐