我知道这可能是一个天真的问题,但对我来说这是一个问题。现在我在applicationDidFinishLaunching中声明了对象。如何在applicationDidFinishLaunching之外使用这个对象 如何在按钮动作函数中使用这些对象,例如
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application
AKanji *test2=[[AKanji alloc] init];
........
}
- (IBAction)kButton:(id)sender {
//iwant to access test 2 here
}
答案 0 :(得分:2)
首先,您应该了解什么是面向对象的编程语言及其正确使用。
现在来看你的问题部分。完全不可能在其他方法中访问 local 变量。一旦范围/生命周期结束,它就会被创建并被销毁。 (在你的情况下,它是一个局部变量)
要实现这一点,您需要使用ivar / property,在该方法中分配值,然后您可以在其他地方访问它。
答案 1 :(得分:0)
我相信你必须在applicationDidFinishLaunching括号之外移动你的汉字* test2。你应该仍然可以在那里分配/初始化它,如果你想要它在那里,你也会在kButton中看到它。
答案 2 :(得分:0)
在AppDelegate.h
中,导入您要创建实例的文件
#import AKanji.h
@interface AppDelegate : UIResponder
@property(nonatomic, strong) AKanji *test2;
@end
AppDelegate.m中的
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application
_test2 =[[AKanji alloc] init];
........
}
ViewController.m中的
#import AppDelegate.h
- (IBAction)kButton:(id)sender {
//iwant to access test 2 here
AppDelegate *delegate = [UIApplication sharedApplication].delegate;
// Now you can access using delegate.test2
}
答案 3 :(得分:-1)
AppDelegate类有一个init作为任何其他类。 因此它可以有@properties。 所以在init上你可以对元素进行任何初始化,这样就可以在整个类中使用。