Подтвердить что ты не робот

Разница между + и - методами в Objective-c

В чем разница между объявленными методами и методами, объявленными с помощью

например

- (void)methodname

+ (void)methodname
4b9b3361

Ответ 1

Методы с префиксом - - это методы экземпляра. Это означает, что их можно вызвать только в экземпляре класса, например:

[myStringInstance length];

Методы с префиксом + - это методы класса. Это означает, что они могут быть вызваны в классах без необходимости экземпляра, например:

[NSString stringWithString:@"Hello World"];

Ответ 2

минус - это методы экземпляра (доступны только через экземпляр объекта)

plus - это методы класса (например, в Java Math.abs(), вы можете использовать его без объекта-объекта)

Ответ 3

В соответствии с эта страница:

Методы экземпляров начинаются с - и методы уровня класса начинаются с +

Подробнее см. этот вопрос SO.

Ответ 4

Первый - это метод экземпляра, а второй - метод класса. Вы должны прочитать документацию Apple Objective-C, чтобы узнать о различии.

Ответ 5

+(void)methodname - это переменная класса, а -(void)methodname - объектная переменная.

Предположим, вы создали класс утилиты, который имеет метод для изменения строки. Класс, который вы называете MYUtility.

Если вы используете +, например

+ (NSString *)reverse:(NSString *)stringToReverse

Вы можете использовать его прямо, как

NSString *reversed = [MYUtility stringToReverse:@"I Love objective C"];

если вы использовали a -, например

- (NSString *)reverse:(NSString *)stringToReverse

Вы должны использовать:

MYUtility *myUtil = [[MYUtility alloc] init];
NSString *reversed = [myUtil stringToReverse:@"There are many ways to do the same thing"];

С помощью функции на основе класса вы просто вызываете напрямую, но у вас нет доступа к каким-либо локальным переменным, кроме #defines, которые вы можете сделать, потому что класс не создается.

Но с помощью - (NSString вы должны создать экземпляр класса перед использованием, и у вас есть доступ ко всем локальным переменным.

Это не одна вещь и оставайтесь с ней, у многих классов есть оба, просто посмотрите на заголовочный файл для NSString, он завален функциями + и -.