Более чистый, хотя и не обязательно другой, способ сделать это состоит в создании одноэлементного класса, например AppData
, к которому вы можете получить доступ различными способами, и который будет доступен для всех ваших других классов. Преимущество этого состоит в том, что вы отделяете специфичные для вашего приложения вещи от делегатов приложений. Вы можете определить класс следующим образом:
@interface AppData : NSObject
// Perhaps you'll declare some class methods here...
@end
Обычная вещь, которую я делаю, - это определение методов класса для такого класса для доступа, например, к значениям настроек, специфичным для приложения константам или другим одноэлементным объектам. Есть много возможностей.
В конце концов, вы можете многое сделать с помощью только методов класса, которые вы бы назвали как-то вроде [AppData theMethod]
. Просто помните, что self
нет доступа внутри метода класса.
Сделав еще один шаг вперед, вы можете определить ivars для класса AppData и затем управлять одноэлементным экземпляром AppData. Используйте метод класса, например +sharedInstance
, чтобы получить указатель на синглтон, по которому вы могли бы затем вызывать методы. Например, [[AppData sharedInstance] someMethod:myArgument]
. Ваша реализация +sharedInstance
может быть там, где вы управляете фактическим созданием синглтона, которое в конечном итоге возвращает метод.
Я не уверен, если бы я назвал этот подход «наилучшей практикой», но я нашел этот шаблон довольно удобным.