Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在目标C中创建全局变量和对象_Objective C_Iphone - Fatal编程技术网

Objective c 在目标C中创建全局变量和对象

Objective c 在目标C中创建全局变量和对象,objective-c,iphone,Objective C,Iphone,我是objective-C新手,正在开发一个包含多个viewController文件的应用程序。我需要访问一个文件中设置的变量值,以便在其他文件中访问。我如何实现这一点 我所做的是创建一个类Globals.m并在其中声明变量 #import <Foundation/Foundation.h> @interface Globals : NSObject @property NSString* firstName; @property NSString* lastName; @p

我是objective-C新手,正在开发一个包含多个viewController文件的应用程序。我需要访问一个文件中设置的变量值,以便在其他文件中访问。我如何实现这一点

我所做的是创建一个类Globals.m并在其中声明变量

#import <Foundation/Foundation.h>

@interface Globals : NSObject

@property  NSString*  firstName;
@property NSString* lastName;
@property NSString* emailId;

@end
#导入
@接口全局变量:NSObject
@属性NSString*firstName;
@属性NSString*lastName;
@属性NSString*emailId;
@结束
我的问题是: 1.上述声明是否会使这些变量在不同的文件中保留这些值

  • 我应该在何处创建该类的可访问对象 在所有文件中

  • 我可能会建议使用单例模式,因为它允许您通过应用程序保存类的实例。因此,您可以在一个类中设置
    firstName
    ,然后在另一个类中获取它

    MySingleton.h

    @interface MySingleton : NSObject
    
    // Our properties we want to set.
    @property (nonatomic, strong) NSString *firstName;
    @property (nonatomic, strong) NSString *lastName;
    @property (nonatomic, strong) NSString *emailName;
    // etc...
    
    // Our class method for getting the shared instance.
    + (MySingleton *)sharedInstance;
    
    @end
    
    MySingleton.m

    #import "MySingleton.h"
    
    @implementation MySingleton
    
    + (MySingleton *)sharedInstance
    {
        static dispatch_once_t pred = 0;
        static id sharedObject = nil;
        dispatch_once(&pred, ^{
            sharedObject = [[self alloc] init];
        });
    
        return sharedObject;
    }
    
    @end
    
    然后在其他类中,只需导入
    MySingleton
    类并执行以下操作:

    MySingleton *singleton = [MySingleton sharedInstance];
    [singleton setFirstName:@"Bob"];
    

    有关单例模式和其他设计模式的更多信息,请参阅本教程。另一个好方法是

    您可以删除@property注释。。。(这只是为了生成getter/setter方法。)然后,使用#import将这个文件导入到任何你想使用变量的地方。在删除@property后,它会给出错误,不能在接口内声明变量。我建议你看一下单例模式,而不是单例模式。你知道吗?只要去掉@interface(和@end)。此文件中不需要注释,因为您只是声明了一些常量。如果您想要一个对象(我的答案不创建类…只是一个平面文件),那么Popeye的答案更好。在此之后,我如何访问其他文件中的sharedObject查看我刚才所做的编辑。您只需调用类方法,比如
    MySingleton*singleton=[MySingleton sharedInstance]
    然后您可以访问它的所有属性。在不同文件中访问变量时,将保留该值???@Popeye您仍然需要#导入,否?(假设你的类在不同的文件中…@martinjakubik是的,很抱歉我会更新,但我通常假设导入是给定的。