2010-06-29 83 views
2

我有一个计数器用于获取该计数器索引处的对象,并且需要在另一个类中访问它。目标C中的全局变量

如何在Objective C中声明静态变量?

回答

1

alJaree嗨,
您声明静态变量在您的类的实现,并通过静态访问允许访问它:

 
some_class.h: 
@interface SomeClass {...} 
+ (int)counter; 
@end 

some_class.m: 
@implementation SomeClass 
static int counter; 
+ (int)counter { return counter; } 
@end

+0

谢谢,但我如何在另一课中使用它?我只是收到“未声明”的错误。 – jarryd 2010-06-29 11:32:44

+0

你必须'#import“some_class.h”'到每个使用计数器的实现文件中。 – Paul 2010-06-29 12:57:31

+0

@alJaree这或多或少是java中具有公共静态成员的类的“等价物”。正如Paul所说的,你必须导入它,然后通过[SomeClass counter]访问它。另一种方法是在头文件中声明一个全局变量(就像c中的那样),但Marcelo已经建议使用这种方法,我认为从OO的角度来看它更清晰。 – 2010-06-29 15:02:42

2

而不是使其全球,给一个类访问其他类的柜台,或有两类共享拥有该计数器第三类:

ClassA.h: 
@interface ClassA { 
    int counter; 
} 
@property (nonatomic, readonly) int counter; 

ClassA.m 
@implementation ClassA 
@synthesize counter; 

ClassB.h: 
#import "ClassA.h" 
@interface ClassB { 
    ClassA *a; 
} 

ClassB.m: 
@implementation ClassB 
- (void)foo { 
    int c = a.counter; 
} 
+0

谢谢,但如何? – jarryd 2010-06-29 11:08:12

+0

你的意思是一个getter方法吗? – jarryd 2010-06-29 11:19:54

+0

使用属性。它应该足以说明它,以免你写一个微不足道的吸气剂的麻烦。 – 2010-06-29 11:53:36