Iphone 如何使实例变量成为全局变量
我的应用程序委托中有一个fbid实例变量。我想在整个应用程序的每个类中使用它,而不使用NSUSERDEFAULT。我想使用extern数据类型,但我不知道如何声明extern变量以及如何使用请帮助?在第一个视图中实现属性,并从第二个视图中设置它 这要求第二个视图引用第一个视图 例如: 第一视图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; @
@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