В отличие от (скажем) C ++, где статические функции-члены являются просто обычными функциями в пространстве имен класса, Objective-C имеет надлежащие методы класса.
Поскольку классы являются объектами, вызов метода класса действительно похож на вызов метода экземпляра класса. Основными последствиями этого являются:
1) Вызов метода класса влечет за собой небольшие (хотя, как правило, несущественные) издержки, поскольку вызовы метода разрешаются во время выполнения.
2) Методы класса имеют неявный аргумент self, как и методы экземпляра. В их случае 'self' является указателем на объект класса.
3) Методы класса наследуются подклассами.
вместе, 2 и 3 означают, что вы можете делать такие вещи с помощью метода класса:
+ (id) instance
{
return [[[self alloc] init] autorelease];
}
затем создайте новый класс, который наследует метод и возвращает новый экземпляр самого себя, а не суперкласс.
Я полагаю, что пометка обычной статической функции c просто сделает ее недоступной для файлов, отличных от того, в котором она определена. Обычно вы делаете это, если хотите создать вспомогательную функцию, которая относится только к одному классу, и вы хотел избежать загрязнения глобального пространства имен.