如何使实例变量全局化

时间:2012-10-10 05:22:09

标签: iphone objective-c global-variables

我在我的app委托中有一个实例变量我想在我的整个应用程序的每个类中使用它而不使用NSUSERDEFAULT。我想使用extern数据类型但是我没有得到任何东西如何声明extern变量以及如何请帮忙吗?

3 个答案:

答案 0 :(得分:2)

您可以在Application Delegate中声明属性变量。

您可以在任何地方访问该变量

//To set value
AppDelegate *yourAppdelegate = (AppDelegate *)[[UIApplication] sharedApplication]delegate];
yourAppdelegate.yourStringVariable = @"";

//To get value 
AppDelegate *yourAppdelegate = (AppDelegate *)[[UIApplication] sharedApplication]delegate];
NSString *accessValue = yourAppdelegate.yourStringVariable;

修改

假设你有MyViewController

//头文件

@interface MyViewController : UIViewController
{
     NSString *classLevelProperty;
}

@property (nonatomic, retain) NSString *classLevelProperty;

@end    

//实施文件

@implementation MyViewController

@synthesize classLevelProperty;

-(void)viewDidLoad
{
    AppDelegate *yourAppdelegate = (AppDelegate *)[[UIApplication] sharedApplication]delegate];
    classLevelProperty = yourAppdelegate.yourStringVariable;

     //Here above classLevelProperty is available through out the class. 
}
@end

这可以在任何视图控制器中完成,并且yourStringVariable的属性值可用于任何viewcontroller或任何其他类,如上面的代码。

希望这清楚。如果仍然无法正确使用,请留下评论。

答案 1 :(得分:0)

在第一个视图上实现属性,并从第二个视图设置它。

这要求第二个视图引用第一个视图。

示例:

FirstView.h

@interface FirstView : UIView

{

    NSString *data;

}

@property (nonatomic,copy) NSString *data;
@end

FirstView.m

@implementation FirstView

// implement standard retain getter/setter for data:

@synthesize data;

@end

SecondView.m

@implementation SecondView

- (void)someMethod

 {

    // if "myFirstView" is a reference to a FirstView object, then

    // access its "data" object like this:

    NSString *firstViewData = myFirstView.data;

}

@end

答案 2 :(得分:0)

如果您想知道如何使用extern关键字,那么这就是如何使用它。 在viewController.hviewController.m上方@interface文件中声明了一个变量,您可以在其中为其指定值。

viewController.h这样的

-

#import <UIKit/UIKit.h>
int value = 5;

@interface ViewController : UIViewController{

}

你也可以在viewController.m声明它@implementation

之上宣布它
#import "ViewController.h"

int value = 5;

@implementation ViewController


@end

然后使用extern关键字,在哪个类中获取此变量。 在secondViewController.h类中声明了一个像这样的变量 -

#import <UIKit/UIKit.h>

@interface SecondviewController : UIViewController{

}

extern int value;

@end

现在在secondViewController.m,您会看到value包含5

有关 extern 关键字的详细信息,请参阅 Using extern to Specify Linkage