如何更改应用程序委托类?

Posted

技术标签:

【中文标题】如何更改应用程序委托类?【英文标题】:How to change the Application Delegate class? 【发布时间】:2012-01-30 08:39:48 【问题描述】:

在每个 ios 应用程序中都有一个 App Delegate 类,这意味着应用程序中的一个类必须实现应用程序事件的委托方法,例如 didFinishLaunching: 等等。通常类名中包含“AppDelegate”。

App Delegate 类是 iOS 上 UIApplicationDelegate 或 Mac 上 NSApplicationDelegate 的子类。

class AppDelegate: UIApplicationDelegate 


假设我想在与为我创建和命名的原始 Xcode 不同的类中实现 App Delegate 方法。我该怎么做?

【问题讨论】:

【参考方案1】:

您可以通过修改 ma​​in.m 文件中的 UIApplicationMain 函数的参数来执行相同操作:

UIApplicationMain(argc,argv,nil,nil);

最后一个参数采用实现 UIApplicationDelegate 协议的类的名称。

所以默认实现看起来像:

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;

修改后会是这样的:

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([< Your class name will go here > class]));
[pool release];
return retVal;

【讨论】:

我不知道它是否仍然相关,但我在我的项目中没有找到任何 main.m 文件【参考方案2】:

我通过更改 AppDelegate 的默认模板实现在 Swift 中实现了这一点:

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate 

替换为:

import UIKit

@UIApplicationMain
class MyAppAppDelegate: UIResponder, UIApplicationDelegate 

查看新的类名。

【讨论】:

以上是关于如何更改应用程序委托类?的主要内容,如果未能解决你的问题,请参考以下文章

应用委托访问环境对象

如何防止访问其他类的委托方法?

IOS 如何更改现有 UI 以使用新的导航控制器

C#—类库委托is和as运算符泛型集合

iOS更改电话号码我尝试通过应用程序委托拨打

通过应用程序委托从表格视图控制器更改单元格内的值