如何在iOS中创建AppDelegate共享实例?

时间:2015-12-23 10:36:56

标签: ios objective-c iphone

我必须创建AppDelegate的sharedInstance并在我的应用程序中使用任何地方。

7 个答案:

答案 0 :(得分:6)

像这样使用:

在AppDelegate.h中

+ (AppDelegate *)sharedAppDelegate;

在AppDelegate.m中

+ (AppDelegate *)sharedAppDelegate{
    return (AppDelegate *)[UIApplication sharedApplication].delegate;
}

答案 1 :(得分:3)

在Constants.h中声明语句

#define myappDelegate ((AppDelegate *)[[UIApplication sharedApplication] delegate])

如果在.pch文件中声明Constants.h,则可以在应用程序中的任何位置使用myappDelegate

对于Xcode 6的PCH,

Check this

答案 2 :(得分:1)

在每个ViewControllers中使用它

#import "AppDelegate.h"

  AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

或者你可以在ViewController子类中创建一个方法&在每个ViewControllers中使用它。

-(AppDelegate*) app
{
   return (AppDelegate*) [[UIApplication sharedApplication] delegate];
}

在UIViewController的子类中 - 然后将其作为所有视图控制器的基类。

然后,[自我app]工作,你不必保留参考。

答案 3 :(得分:1)

你可以像下面那样使用

在Objective C :您可以在.pch文件和用户中随意添加以下行

#define myAppDelegate (AppDelegate *)[[UIApplication sharedApplication] delegate]

并使用myAppDelegate.someVariable or [myAppDelegate somemethod]

之类的内容

在Swift中

Swift> = 1.2(Xcode 6.3引入)

let myAppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let aVariable = myAppDelegate.someVariable

斯威夫特< 1.2

let myAppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let aVariable = myAppDelegate.someVariable

答案 4 :(得分:0)

使用此:

+ (AppDelegate *)appDelegate
{
    return (AppDelegate *)[[UIApplication sharedApplication] delegate];
}

答案 5 :(得分:0)

其他答案使用UIApplication.shared.delegate,但你需要总是'as! AppDelegate',所以一个Swift更干净的代码:

// AppDelegate.swift

static var shared = AppDelegate() // Declare a static variable as an instance of AppDelegate

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    // Singleton
    AppDelegate.shared = self // set the value of "shared" to the current instance

    return true
}


用法

AppDelegate.shared

答案 6 :(得分:-3)

任何ViewController它正在使用这个appDelegate,包括Xcode 8

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];