我在我的app委托中有一个实例变量我想在我的整个应用程序的每个类中使用它而不使用NSUSERDEFAULT。我想使用extern数据类型但是我没有得到任何东西如何声明extern变量以及如何请帮忙吗?
答案 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.h
或viewController.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