如何更改App-Delegate类

时间:2012-01-30 08:39:48

标签: iphone ios xcode

在每个iOS应用程序上都有一个app-delegate类,这意味着应用程序中的一个类必须实现应用程序事件的委托方法,例如didFinishLaunching等(通常类名包含“appDelegate”)。

我的问题是:假设我想在不同的类中实现app-delegate方法,而不是原来的xcode为我决定的。我怎么能这样做?

2 个答案:

答案 0 :(得分:8)

您可以通过修改 main.m 文件中

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;

答案 1 :(得分:1)

Swift 3.0

我通过更改Swift 3.0中的AppDelegate默认模板实现

来实现了相同的目标
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
         .....

import UIKit

@UIApplicationMain
class MyAppAppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

查看新的班级名称。