Различие между + и - методы в Цели-c

32
задан Jasarien 11 February 2010 в 10:14
поделиться

5 ответов

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

[myStringInstance length];

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

[NSString stringWithString:@"Hello World"];
50
ответ дан Jasarien 27 November 2019 в 20:42
поделиться

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

Допустим, вы создали вспомогательный класс, в котором есть метод для обращения строки. Класс, который вы называете MYUtility.

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

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

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

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

, если вы использовали -, как

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

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

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

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

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

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

2
ответ дан Abhinay Reddy Keesara 27 November 2019 в 20:42
поделиться

Согласно эта страница :

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

См. этот вопрос SO для получения дополнительной информации.

1
ответ дан 27 November 2019 в 20:42
поделиться

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

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

2
ответ дан 27 November 2019 в 20:42
поделиться

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

0
ответ дан 27 November 2019 в 20:42
поделиться
Другие вопросы по тегам:

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