Статический конструктор, эквивалентный в Objective C?

Если вам нужна только дата:

SELECT MIN(date) as EarliestDate
FROM YourTable
WHERE id = 2

Если вам нужна вся информация:

SELECT TOP 1 id, name, score, date
FROM YourTable
WHERE id = 2
ORDER BY Date

Предотвращайте петли, когда можете. Циклы часто приводят к курсорам, и курсоры почти никогда не нужны и очень часто неэффективны.

70
задан Quinn Taylor 2 July 2009 в 14:39
поделиться

2 ответа

Метод + initialize вызывается автоматически при первом использовании класса, до использования каких-либо методов класса или создания экземпляров. Вы никогда не должны вызывать + инициализировать самостоятельно.

Я также хотел рассказать о лакомом кусочке, который, как я узнал, может вас укусить в будущем: + initialize наследуется подклассами и является также вызывается для каждого подкласса, который не реализует собственную + инициализацию . Это может быть особенно проблематично, если вы наивно реализуете одиночную инициализацию в + initialize . Решение - проверить тип переменной класса следующим образом:

+ (void) initialize {
  if (self == [MyParentClass class]) {
    // Once-only initializion
  }
  // Initialization for this class and any subclasses
}

Все классы, производные от NSObject, имеют методы + class и -class , которые возвращают объект Class . Поскольку для каждого класса существует только один объект Class, мы действительно хотим проверить равенство с помощью оператора == . Вы можете использовать это для фильтрации того, что должно произойти только один раз, а не один раз для каждого отдельного класса в иерархии (которая может еще не существовать) ниже данного класса.

По второстепенной теме стоит узнать о следующих связанных методах , если вы еще этого не сделали:


Изменить: https://www.mikeash.com/pyblog/friday-qa-2009-05-22-objective-c-class-loading-and-initialization.html

128
ответ дан 24 November 2019 в 13:17
поделиться

Существует метод класса + инициализация , который будет вызываться перед использованием класса.

51
ответ дан 24 November 2019 в 13:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: