Как изменить класс App-Delegate - PullRequest
5 голосов
/ 30 января 2012

В каждом приложении iOS есть класс-делегат приложения, то есть один из классов в приложении должен реализовывать методы делегата для событий приложения, таких как didFinishLaunching и т. Д. (Обычно имя класса содержит «appDelegate»).

Мой вопрос: допустим, я хочу реализовать методы app-делегата в другом классе, чем тот, который для меня решил исходный xcode. Как я могу это сделать?

Ответы [ 2 ]

8 голосов
/ 30 января 2012

Вы можете сделать то же самое, изменив параметры на

<code>UIApplicationMain(argc,argv,nil,nil);
, присутствующий в файле main.m .Последний параметр принимает имя класса, который реализует протокол UIApplicationDelegate .
Таким образом, реализация по умолчанию выглядит примерно так:
<code>
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
Так что после изменения она будет выглядеть примерно так:
<code>
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([< Your class name will go here > class]));
[pool release];
return retVal;
1 голос
/ 26 мая 2017

Свифт 3.0

Я добился того же, изменив реализацию шаблона AppDelegate по умолчанию в Swift 3.0

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?

См. Новое имя класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...