Objective-c怎么定义全局的静态变量

之前用到静态变量都是在函数里的局部变量
现在我有一个需求是,需要一个静态变量,在整个程序中都需要访问,就想静态方法那样
但是我在@interface里这样写

@interface MyObject:NSObject {
    static NSString *staticString;
}

会报错,不允许在interface里定义static
那我需要怎么处理?

阅读 42.4k
4 个回答

简易版本全局变量,命名神马的我都没规范。

QSHelper.h

@interface QSHelper : NSObject
+ (void)setStr:(NSString *)str;
+ (NSString *)getStr;
@end

QSHelper.m

#import "QSHelper.h"
static NSString *myString = nil;
@implementation QSHelper
+ (void)setStr:(NSString *)str
{
    myString = str;
}
+ (NSString *)getStr
{
    return myString;
}
@end

访问,包含此类,如下使用。

[QSHelper setStr:@"123"];
[QSHelper getStr];

Cheddar的工程中是这么做的,供参考:

CDKDefines.h

#import <Foundation/Foundation.h>

#ifndef CHDEFINES
#define CHDEFINES

extern NSString *const kCDKAPIScheme;
extern NSString *const kCDKAPIHost;
extern NSString *const kCDKPusherAPIKey;
#endif

...

CDKDefines.m

#import "CDKDefines.h"

#pragma mark - API

NSString *const kCDKAPIScheme = @"https";
NSString *const kCDKAPIHost = @"api.cheddarapp.com";
NSString *const kCDKPusherAPIKey = @"675f10a650f18b4eb0a8";

...
新手上路,请多包涵

声明在.m文件里面写,自己写setter和getter,通过setter和getter访问

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题