self
относится к текущему классу (в котором он называется),
$this
относится к текущему объекту. Вы можете использовать статические вместо себя. См. Пример:
class ParentClass {
function test() {
self::which(); // output 'parent'
$this->which(); // output 'child'
}
function which() {
echo 'parent';
}
}
class ChildClass extends ParentClass {
function which() {
echo 'child';
}
}
$obj = new ChildClass();
$obj->test();
Вывод: родительский ребенок
Core Data сильно оптимизирован в отношении кэширования, отложенной загрузки и управления памятью.
Если вы используете его (с типом хранилища SQLite), особенно в сочетании с NSFetchedResultsController, вы должны получить лучшую производительность, чем вы могли бы получить с SQLite самостоятельно
Apple приложила много усилий, чтобы Core Data хорошо работала на iPhone. Мое приложение переключилось с SQLite с FMDB на Core Data, и теперь оно работает быстрее и стабильнее с меньшим количеством кода.
Core Data может использовать sqllite - это должен настраивать разработчик - так что ваш подозреваемый правильно. В отношении телефона я бы посоветовал sqllite - лучшая идея.
Я думаю, что одним из самых больших преимуществ, которые вы можете получить с помощью Core Data, является отложенная загрузка данных и отказ от экономии памяти. Поэтому вам нужно также думать о таких вещах, когда вы рассматриваете производительность, поскольку объем свободной памяти также будет влиять на производительность.