ary*_*axt 9 iphone global-variables objective-c static-variables
在我的.m文件中,我有一个名为Ad的类,我有3个静态字符串
static NSString *AdStateDisabled = @"disable";
static NSString *AdStateExpired = @"expired";
static NSString *AdStateActive = @"active";
Run Code Online (Sandbox Code Playgroud)
我可以简单地在当前类中使用这些静态变量,但我不能从任何其他类调用它们,有没有办法使这些静态变量全局化?所以例如在我的viewcontroller类中我可以做类似的事情.
//HomeViewController.m
if ([self.ad.state isEqual:Ad.AdStateDisabled])
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
ima*_*boy 18
您可以将以下声明添加到HomeViewController.h标头中,然后需要将其导入到您希望访问字符串的任何位置.
//HomeViewController.h
extern NSString *AdStateDisabled;
extern NSString *AdStateExpired;
extern NSString *AdStateActive;
Run Code Online (Sandbox Code Playgroud)
然后更改您的定义以删除"静态".
//HomeViewController.m
NSString *AdStateDisabled = @"disable";
NSString *AdStateExpired = @"expired";
NSString *AdStateActive = @"active";
Run Code Online (Sandbox Code Playgroud)
如果您不希望字符串的用户必须导入HomeViewController.h,那么您也可以在AdState.h中定义这些字符串并将定义放入AdState.m(并从HomeViewController.m中删除它们)之后用户字符串只需要导入AdState.h来使用字符串.
首先,删除静态.C和Objective-C中的静态变量和函数意味着它们仅对当前编译单元可见(或多或少:只有您声明statix变量的文件才能看到它).
接下来,您还需要使用"extern"在公共头文件中声明变量,就像与该类关联的类之一:
extern NSString *AdStateDisabled;
Run Code Online (Sandbox Code Playgroud)
然后,您也可以在其他文件中使用它们,但不能将它们作为"Ad.AdStateDisabled"访问,而是将其作为"AdStateDisabled"访问.
| 归档时间: |
|
| 查看次数: |
11396 次 |
| 最近记录: |