2015-05-28 3 views
3

Я заметил самую странную вещь. Я играл с NSTimer, и, проходя через Apple documentation, я добрался до valid недвижимости here и заметил, что это свойство доступно с iOS 8. Этот факт сам по себе не странный, но факт, что тонны stackoverflow posts от 4-6 лет назад относительно NSTimer ссылаются на это свойство или предлагают использовать его, меня путают: Example 1, example 2, example 3 и многие другие.Какая версия iOS поддерживает допустимое свойство NSTimer?

Так что мой вопрос делится на 2:

  • Какие версии IOS действительно поддерживает NSTimer valid недвижимость?
  • Если я настроен на iOS 7 и выше, можно ли использовать это свойство?

Заранее спасибо.

+1

Я использую этот 'NSTimer' и его свойство' valid' в моем приложении, ориентированном на ios 7 и выше, и он работает нормально – Shruti

+0

, если я не ошибаюсь и могу правильно запомнить, я использовал его уже в iOS4; Я чувствую, что он доступен с момента появления «NSTimer». Я предполагаю, что его текущая доступность - опечатка в новых документах на сайте Apple. – holex

ответ

1

Каждые отсутствуют реальную историю. Посмотрите на API-интерфейс iOS 8.0 для NSTimer (и многих других классов).

Apple сделала огромный рефактор, преобразовывая многие API-интерфейсы, чтобы использовать свойства вместо явных методов setter/getter.

До IOS 8.0, NSTimer имел метод с именем isValid. В прошивкой 8.0, Apple, удалена этот метод и добавляется свойство только для чтения valid (объявленного с именем методы геттера из isValid.

В результате этого изменения (и многое, как он) в прошивкой 8.0, то документы сделать много API-интерфейсов выглядят так, как если бы они были добавлены только в iOS 8.0, хотя они, возможно, были намного дольше.

Конечный результат: документация теперь очень вводит в заблуждение для многих свойств. Маловероятно, что представление ошибки в документации будет ничего, потому что эта проблема относится к множеству классов и сотен свойств/методов.

+0

Тот факт, что есть тоны таких проблем, как этот во многих классах и сотнях свойств/методов, не должен быть причиной отказа от него, а не отправки ошибки в документации. Я сообщил об этом проблеме, и, надеюсь, многие последуют за подобными проблемами, поэтому в конечном итоге документация будет такой же точной, насколько это возможно. Спасибо за ваше объяснение :) – goldengil

3

Документация Apple обновлена ​​для Swift, поэтому у нее есть Available in iOS 8.0 and later для некоторых свойств и методов, в то время как они определенно были там с предыдущих версий iOS. Например, в iOS 2.0 был введен NSTimer. Вы можете безопасно использовать его.

+0

Так что в этом случае это ошибка в документации Apple. Должен ли я сообщить об этом? И если да, то как? :) – goldengil

+1

О, приятель, вы найдете его в документах слишком часто ... Я бы предпочел обратить внимание на устаревшие. –

+0

Этот ответ неверен.Он не имеет ничего общего с обновляемой документацией для Swift. Это связано с гигантским рефакторингом, который Apple сделала, заменив многие предыдущие методы setter/getter со свойствами. См. Мой ответ. – rmaddy

1

Я пошел в файл NSTimer.h и нашел

@property NSTimeInterval tolerance NS_AVAILABLE(10_9, 7_0); 

- (void)invalidate; 
@property (readonly, getter=isValid) BOOL valid; 

@property (readonly, retain) id userInfo; 

@end 

Не удалось увидеть NS_AVAILABLE перед valid собственности, может быть яблоко Документах некоторые ошибки

Я даю обратную связь с исправь это.

enter image description here

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