代码之家  ›  专栏  ›  技术社区  ›  Knodel

全局nsstring

  •  6
  • Knodel  · 技术社区  · 16 年前

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

    6 回复  |  直到 8 年前
        1
  •  10
  •   samfu_1    8 年前

    如果你写:

    NSString *globalString = @"someString";   
    

    在方法、类定义、函数等之外的任何地方…它可以在任何地方被引用。(它是全球性的!)

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

    extern NSString *globalString;
    

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

        2
  •  6
  •   bastibe    16 年前

    使其成为全局变量。

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

    NSMutableString *myString = @"some funny string";
    

    在另一个文件中:

    extern NSMutableString *myString;
    
        3
  •  6
  •   Chander Shakher Ghorela - Guru    14 年前

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

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

    1. 创建一个名为“globalvars.h和.m”的nsobject文件或根据您的意愿
    2. 在globalvars.h文件中,在导入之后和@implementation之前声明全局变量,如-

      外部nsstring*var_名称;

    3. 在导入之后和@implementation之前在globalvars.m文件中初始化它,如-

      nsstring*var_name=@“”;

    4. 在appdelegate.h文件中定义其属性

      @属性(非原子,保留)nsstring*var_name;

    5. 在appdelegate.m文件中合成它-

      @合成变量名;

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

    7. 仔细地遵循这些步骤,它肯定会起作用的。
        4
  •  3
  •   John Calsbeek    16 年前

    如果你正在创建一个全球 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
    
        5
  •  2
  •   Andrew Hooke    16 年前

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

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

        6
  •  0
  •   Sharjeel Aziz    16 年前

    我想你应该用单件的。讨论这一点的一篇好文章是 Singletons, AppDelegates and top-level data.

    有关singleton类的其他信息位于 MVC on the iPhone: The Model