【发布时间】:2010-02-10 15:43:30
【问题描述】:
我是 iPhone 开发的新手。我想在所有类方法中访问一个字符串变量,并且我想全局访问该字符串。我该怎么做?
请帮帮我。
【问题讨论】:
标签: iphone objective-c declaration
我是 iPhone 开发的新手。我想在所有类方法中访问一个字符串变量,并且我想全局访问该字符串。我该怎么做?
请帮帮我。
【问题讨论】:
标签: iphone objective-c declaration
撇开全局变量的问题,如果它们是良好的编码习惯......
在项目的 .m 文件中的任何 Objective-C 类之外创建字符串:
NSString *myGlobalString = @"foo";
然后将声明放在一个头文件中,该文件包含在所有其他想要访问您的字符串的文件中:
extern NSString *myGlobalString;
好吧,我不能把它完全放在一边。您是否考虑过将“全局”字符串放在其他地方,可能在您的应用程序委托中作为(可能是只读的)属性?
【讨论】:
创建全局变量的首选方法是:
方法(2)的最大优点是它是封装和可移植的。需要在另一个项目中使用使用全局的类?只需将带有变量的类与它们一起移动即可。
【讨论】:
您可以通过在委托类中实现 getter 和 setter 来实现。
在委托 .h 文件中
包括 UIApplication 委托
@interface DevAppDelegate : NSObject <UIApplicationDelegate>
NSString * currentTitle;
- (void) setCurrentTitle:(NSString *) currentTitle;
- (NSString *) getCurrentTitle;
在Delegate实现类.m中
-(void) setCurrentLink:(NSString *) storydata{
currentLink = storydata;
}
-(NSString *) getCurrentLink{
if ( currentLink == nil ) {
currentLink = @"Display StoryLink";
}
return currentLink;
}
所以你要评估的变量是通过setter方法和你想要字符串的类在currentlink字符串中设置的,只需使用getter方法。
一切顺利
【讨论】:
我发布了一篇关于我的方法的文章:
http://www.pushplay.net/2011/02/quick-tip-global-defines/
这是我主要用于通知键的东西。创建 globals.h 文件并将其添加到 (your_project_name)_Prefix.pch 文件将确保它可全局访问...
【讨论】: