2016-06-21 2 views
0

Почему мы не можем использовать метод init в NSCalendar *cal = [[NSCalendar alloc] init];, так как init - это метод экземпляра, который имеет каждый класс? Xcode дает сообщение: «инициализация» был явно помечен как недоступные здесьПочему мы не можем использовать метод init в NSCalendar * cal = [[NSCalendar alloc] init];

+2

Apple отметила это так, потому что 'NSCalendar' имеет назначенный инициализатор, который принимает идентификатор календаря. Они не хотят, чтобы вы использовали 'init', потому что он не будет правильно инициализирован. – Avi

ответ

1

NSCalendar должен быть начат как это:

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

без указания какого вида календаря вашей покупки, то экземпляр будет бесполезный. Именно так инфраструктура не позволяет вам инициализировать бесполезные объекты.

+0

Это помогло, спасибо. Я использую Xcode 7.3.1, он говорит: «NSGregorianCalendar» устарел: сначала устарел в OS X 10.10 - Вместо этого используйте NSCalendarIdentifierGregorian –

Смежные вопросы