Ios 目标c如何从外部访问ApplicationIDFinishLaunching变量

Ios 目标c如何从外部访问ApplicationIDFinishLaunching变量,ios,objective-c,macos,cocoa,cocoa-touch,Ios,Objective C,Macos,Cocoa,Cocoa Touch,我知道这可能是个幼稚的问题,但对我来说却是个问题。现在我已经在ApplicationIDFinishLaunching中声明了对象。如何在ApplicationIDFinishLaunching外部使用此对象 例如,如何在按钮操作函数中使用这些对象 - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { // Insert code here to initialize your application A

我知道这可能是个幼稚的问题,但对我来说却是个问题。现在我已经在ApplicationIDFinishLaunching中声明了对象。如何在ApplicationIDFinishLaunching外部使用此对象 例如,如何在按钮操作函数中使用这些对象

 - (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

     }

AppDelegate类与任何其他类一样具有init。 因此,它可以具有@properties。
因此,在init上,您可以对元素进行任何初始化,这样就可以在整个类中使用。

首先,您应该了解什么是面向对象编程语言,以及它的正确用法

现在进入问题部分。在其他方法中根本不可能访问局部变量。一旦作用域/生命周期结束,它就会被创建和销毁。(在您的情况下,它是一个局部变量)


要实现这一点,您需要使用ivar/属性,在该方法中分配值,然后您可以在其他地方访问它。

我相信您必须将您的Kanji*test2移到ApplicationIDFinishLaunching括号之外。如果您想在其中进行分配/初始化,您应该仍然能够在其中进行分配/初始化,并且您还可以在kButton中看到它。

AppDelegate.h
中,导入要创建实例的文件

#进口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

 }

你对面向对象的代码和实例变量有什么认识?我对它们不熟悉。很抱歉,我搜索了web bot没有找到任何答案,您应该阅读,为了理解这一部分,非常感谢我将阅读:)@user1478不鼓励使用全局状态,因为这是一种不好的做法&不是一种好的设计方法。事实上,如果建议在AppDelegate类中执行此操作(如一些答案所假设的),这也是错误的-问题看起来不像,因为它使用通知,所以希望应用程序委托在这里没有被滥用。明白了,所以我必须将它们声明为属性以访问它们,对吗?感谢lothup@AlaaAhmadM.Zakaria,一般来说,属性是在类级别可访问的变量。如果你把它们放在.m里面(只放在类里面),如果你把它们放在.h外面谢谢,我收到了,我会把它作为财产