Objective c 全局NSString

Objective c 全局NSString,objective-c,nsstring,Objective C,Nsstring,我需要创建一个NSString,这样我就可以在一个类中设置它的值,然后在另一个类中获取它。我该怎么做?将其设置为全局变量 在全局范围内的一个文件中: NSMutableString *myString = @"some funny string"; 在另一个文件中: extern NSMutableString *myString; 如果你写: NSString *globalString = @"someString"; 方法、类定义、函数等之外的任何位置。。。它可以在任何地方被引

我需要创建一个NSString,这样我就可以在一个类中设置它的值,然后在另一个类中获取它。我该怎么做?

将其设置为全局变量

在全局范围内的一个文件中:

NSMutableString *myString = @"some funny string";
在另一个文件中:

extern NSMutableString *myString;
如果你写:

NSString *globalString = @"someString";   
方法、类定义、函数等之外的任何位置。。。它可以在任何地方被引用。(它是全球性的!)

访问它的文件将声明它为外部文件

extern NSString *globalString;

此声明表示正在从另一个文件访问它。

如果要创建全局
NSString
变量,则应使用类方法

MyClass.h
中:

@interface MyClass : NSObject {}
     + (NSString *)myGlobalVariable;
     + (void)setMyGlobalVariable:(NSString *)val;
@end
MyClass.m
中:

@implementation MyClass
    NSString *myGlobalVariable = @"default value";

    + (NSString *)myGlobalVariable {
        return myGlobalVariable;
    }

    + (void)setMyGlobalVariable:(NSString *)val {
        myGlobalVariable = val;
    }
@end

我想你应该用单身汉。讨论这一点的一篇好文章是


关于单例类的其他信息在

请记住,您应该记住内存分配和释放。这与全局int值不同-您需要使用任何NSObject管理内存


反复将全局字符串设置为新字符串将导致泄漏。通过线程访问将产生各种各样的问题。然后是关机,最后一个字符串仍然存在。

完整iPhone项目/应用程序的全局NSString变量

要声明/定义/使用全局变量,请执行以下简单步骤:-

  • 创建名为“GlobalVars.h和.m”或如您所愿的NSObject文件

  • 在#import之后@implementation之前在GlobalVars.h文件中声明全局变量,如-

    外部NSString*变量名称

  • 在#import之后和@implementation之前,在GlobalVars.m文件中初始化它-

    NSString*Var_name=@

  • 在AppDelegate.h文件中定义其属性

    @属性(非原子,保留)NSString*Var_名称

  • 在AppDelegate.m文件中合成它,如-

    @综合变量名

  • 现在,如果您想使用这个变量(在.m文件中),只需在所有.h文件中导入/include GlobalVars.h文件,就可以轻松地全局访问这个变量

  • 仔细遵循这些步骤,它肯定会工作


  • 在运行时是否需要更改字符串?所有全局字符串和单例的解决方案都是因为问题提到了它。如果问题仅仅是在受限用途下创建/更改字符串,那么完全有可能对对象的属性执行此操作。通知是另一种方式。KVO是另一种方式你甚至可以使用授权。问题中没有足够的信息,无法提供经过深思熟虑的答案。它是有效的!但我需要删除步骤4和5。我不知道为什么,但我成功了。