Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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
Iphone 如何使实例变量成为全局变量_Iphone_Objective C_Global Variables - Fatal编程技术网

Iphone 如何使实例变量成为全局变量

Iphone 如何使实例变量成为全局变量,iphone,objective-c,global-variables,Iphone,Objective C,Global Variables,我的应用程序委托中有一个fbid实例变量。我想在整个应用程序的每个类中使用它,而不使用NSUSERDEFAULT。我想使用extern数据类型,但我不知道如何声明extern变量以及如何使用请帮助?在第一个视图中实现属性,并从第二个视图中设置它 这要求第二个视图引用第一个视图 例如: 第一视图 @interface FirstView : UIView { NSString *data; } @property (nonatomic,copy) NSString *data; @

我的应用程序委托中有一个fbid实例变量。我想在整个应用程序的每个类中使用它,而不使用NSUSERDEFAULT。我想使用extern数据类型,但我不知道如何声明extern变量以及如何使用请帮助?

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

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

例如:

第一视图

@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

您可以在
应用程序委托中声明属性变量

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

//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或任何其他类,如上述代码所示


希望一切都会明朗。如果仍然无法正确获取,请留下注释。

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

viewController.h中-

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

@interface ViewController : UIViewController{

}
然后使用
extern
关键字在哪个类中获取此变量。 在
secondViewController.h
类中声明了如下变量-

#import <UIKit/UIKit.h>

@interface SecondviewController : UIViewController{

}

extern int value;

@end
#导入
@界面SecondviewController:UIViewController{
}
外部-内部值;
@结束
现在在
secondViewController.m
中,您将看到
value
包含
5


有关
extern
关键字的更多详细信息,请参见

使用您可以使用的appDelegate方法。您不能将实例变量设置为“全局”。在弄乱术语之前,请阅读一篇全面的C教程。(AppDelegate*)[[UIApplication]sharedApplication]委托].fbid确保fbid是AppDelegate中公开的属性。hye它是公开的属性,但我想使此变量成为全局变量,并且我可以在其他类的类对象的帮助下直接使用此变量。我如何做到这一点?在何处声明外部变量?我在#导入下的接口上方声明的第二个视图控制器,但我我在第二个视图中得到空值。在任何你想要的地方全局声明一个变量,然后给它赋值,现在你想在哪个类中访问它。h类用extern关键字声明该变量,在这里它将保持与你分配给它的值相同的值。但我没有得到相同的值。我得到空值。你能给我看看如果可以的话,在第二类中声明外部变量的代码。我已经编辑了我的答案。。。现在看。对不起,我以前也这么做过,结果为空。我通过调用该类的实例方法获取值。但我希望通过在每个类中声明一个全局变量来直接获取该值。如果您有任何内容,请共享。此处我的变量是应用程序委托中的变量,如果我的变量是除应用程序委托之外的任何其他位置,我希望在不同的类中全局使用该值。什么我能做什么?这就是我的问题。代码我只写了那个问题的答案。您可以使用上述代码中的第一条语句获取应用程序委托实例,并使用上述代码中的最后一条语句访问其属性值。您可以在任何视图控制器中的任何位置写入这些行。您需要相应地导入应用程序委托头文件。希望您能明白。谢谢。是的,这对我来说很清楚。但是我想使变量从任何类变为全局变量,并且可以在我的应用程序的任何类中使用它。等待您的帮助。再次感谢您。请添加您的代码您已经做了什么以及您想要做什么。我将相应地提供帮助。接口mainviewViewController{NSString*mystr;}属性(retain)NSString*mystr,*值;end//In.m文件实现MainViewController合成mystr-(void)viewDidLoad{[super viewDidLoad];//我正在这里设置值。mystr=@“rrrr”}我想在另一个视图或类中使用此mystr#导入“mainviewViewController.h”接口textview:UIViewController{IBOutlet UILabel*mylable;}end//textview类的.m文件-(void)viewDidLoad{[super viewDidLoad];NSLog(@“%@”,mylable.text);}我在这里如何使用该类mystr。
#import <UIKit/UIKit.h>

@interface SecondviewController : UIViewController{

}

extern int value;

@end