В чем разница использования:Цель-C: В чем разница между + и - в геттерах и сеттерах?
+ (id) myMethod;
// Rather than
- (id) myMethod;
В чем разница использования:Цель-C: В чем разница между + и - в геттерах и сеттерах?
+ (id) myMethod;
// Rather than
- (id) myMethod;
Использование +
объявляет метод как метод класса или метод, который можно назвать прямо в классе, где класс is объект. Поэтому, когда у вас есть это:
@implementation Foo
+(NSString*)method1 {
return @"Foo";
}
-(NSString*)method2 {
return @"Foo";
}
@end
методы называются по-разному:
[Foo method1]; //=> @"Foo"
Foo* f=[[Foo alloc] init];
[f method2]; //=> @"Foo"
Еще одна вещь, чтобы отметить, что методы класса не имеют доступа к экземпляру, а это означает, что они могут 't получить доступ к любым переменным экземпляра.
... и, следовательно, методы класса не являются геттерами. Это просто классные методы. Кроме того, ваш пример будет более ясным, если два метода вернут разные значения. –
@KenThomases: Точно. – Linuxios
Верхний представляет собой метод класса (экземпляра требуется) Вторая переменная экземпляра (прилагается к определенному экземпляру).
Этот ответ объясняет методы довольно хорошо:
[MyObject myMethod]; // did not have to create an instance
MyObject* myNewObject = [[MyObject alloc] init] autorelease];
[myNewObject myMethod]; // had to create an instance
@ Linuxios в значительной степени подытожил концепцию класса и метода экземпляра. Однако, поскольку вы упомянули геттеры и сеттеры в своем названии, я хочу указать, что в Objective-C вы можете использовать свойства вместо написания собственных методов доступа. Например,
В файле заголовка, вы будете иметь что-то вроде этого:
@interface MyObject : NSObject
@property (nonatomic,retain) NSSet* mySet;
@end
В файле м, вы Виль иметь что-то вроде этого:
@implement MyObject
@synthesize mySet;
@end
Чтобы получить доступ к сет другой класс вы можете сделать это следующим образом:
myObject.mySet; // assuming myObject is an instance of the MyObject class
Возможный дубликат [Что означают знаки плюс и минус в Objective C рядом с методом?] (htt p: //stackoverflow.com/questions/2097294/what-do-the-plus-and-minus-signs-mean-in-objective-c-next-to-a-method) – vikingosegundo