Подтвердить что ты не робот

Почему AppDelegate наследуется от UIResponder?

Я заметил, что при создании нового проекта с использованием шаблона iPhone-Detail в Xcode 4.2 beta 4 он выполняет следующие действия:

// AppDelegate.h

@interface AppDelegate : UIResponder <UIApplicationDelegate>

Почему AppDelegate наследует от UIResponder вместо NSObject?

4b9b3361

Ответ 1

Из Преобразование в примечания к выпуску раскадровки:

Примечание. В текущих шаблонах Xcode класс делегирования приложения наследуется от UIResponder. Это значит, что экземпляр делегата может участвовать в цепочке ответчиков и поэтому обрабатывать действия на уровне приложения. Если вы не использовали этот шаблон в существующем приложении, нет необходимости его использовать для раскадровки.

Ответ 2

Проверьте документацию UIResponder. Поскольку AppDelegate может реагировать на события касания, он реализует интерфейс UIResponder.

Ответ 3

Я бы предположил, что он имеет доступ к глобальному менеджеру отмены.

Ответ 4

UIResponder является базовым классом для UIKit framework. UIResponder может обрабатывать события.

Ваш класс AppDelegate - это класс делегата для UIApplication, который UIApplicationMain. AppDelegate соответствует протоколу UIApplicationDelegate.

В классе UIResponder есть методы, чтобы получить окно фокуса приложения, на котором будут заполнены все представления, поэтому у вас должен быть класс, который наследует от UIResponder, чтобы сделать окно ключевым.

Ответ 5

AppDelegate наследует от UIResponder, который обрабатывает события iOS. Класс UIResponder определяет интерфейс для объектов, которые реагируют на события и обрабатывают события.

Ответ 6

ОБНОВЛЕНИЕ: Мой ответ ниже может быть неправильным. Я просто просматривал изображение в документации iOS. Но он должен быть устаревшим.

Если в iOS 5 нет ничего нового и еще не задокументировано, я думаю, что это опечатка с этим шаблоном Xcode 4.2 beta 4. В приложении iOS делегат приложения должен иметь подкласс NSObject, а не UIResponder, например:

@interface AppDelegate : NSObject <UIApplicationDelegate>

Для UIApplication - последний ответчик в цепочке ответчиков.

Для приложений Mac OS X в наборе приложений (для Cocoa, например, Mac) делегат приложения является последним ответчиком в цепочке ответчиков.