我想使用靜態變量來保存一個NSString。 所以我在.h文件中定義一個靜態無功這樣的:如何使用靜態變量在objective-c中保存字符串?
#ifndef GlobalParameters_h
#define GlobalParameters_h
//access token
static NSString *applicationToken;
#endif
在A類,我改變靜止無功這樣的:
#import "ClassA.h"
#import "GlobalParameters.h"
extern NSString *applicationToken;
@implementation ClassA
+ (void)parseResponse:(NSString *)response
{
NSDictionary *responseDic = [response objectFromJSONString];
NSString *token = [responseDic objectForKey:@"token"];
applicationToken = [token copy];
NSLog(@"%@",applicationToken);
}
當調試運行到
applicationToken = [token copy];
我發現「applicationToken」爲零,但下一句
NSLog(@"%@",applicationToken);
可以在控制檯輸出正確的值!而在ClassB中,「applicationToken」也是零。 我不知道爲什麼靜態var是零。我認爲編譯器會在GlobalParameters.h中找到「applicationToken」的定義。但爲什麼我無法修改靜態值?
感謝您的幫助:)
感謝您的幫助。但是,我使用關鍵字「extern」。我記得「extern」可以擴大var的範圍。 – 2014-10-08 09:57:44
@ Tsich'i,好的。使用'extern',只是不要使用'static'。 – 2014-10-08 10:32:17
在GlobalParameters_h中,我將「staic NSString * applicationToken」修改爲「NSString * applicationToken」。然後在ClassA中,可以正確修改「applicationToken」。在MyApp運行過程中,有沒有發佈「applicationToken」的可能性? @ Cy-4AH – 2014-10-08 10:34:09