мне нужно знать, как я могу сделать статический метод и статическое свойство, как статический метод в Java ...«Статический класс в Objective C»
Благодаря
Maxime
мне нужно знать, как я могу сделать статический метод и статическое свойство, как статический метод в Java ...«Статический класс в Objective C»
Благодаря
Maxime
В Objective-C тех называются методами класса, и они предваряются знаком плюс (+)
@interface MyClass : NSObject
+ (void)myClassMethod;
- (void)myInstanceMethod;
@end
Статические методы в Objective C известны как методы класса и начинаются со знака «+», например:
+ (void)aStaticMethod
{
// implementation here
}
Статические переменные объявляются с использованием ключевого слова static
.
Спасибо ... теперь ясно! – Maxime
Вы не можете создавать статические свойства автоматически, но вы можете создавать статические методы getter и setter вручную.
+ (NSObject *) myStaticValue;
+ (void)setMyStaticValue:(NSObject *)value;
Если вы хотите создать статическое свойство, вы создаете переменную класса. свойства используются только для переменной instance. Если вы создаете static, все объекты имеют одну и ту же переменную; Потому что это переменная класса.
вы можете объявить его в файле реализации вашего класса. Он должен соответствовать директиве компилятора @implementation. Но эта статическая переменная может использоваться только внутри своего класса. вы можете использовать его с помощью собственных методов getter-setter, а не по свойству.
Как уже отмечалось, статические методы класса начинаются с плюсом (+) в объявлении, например:
@interface MyClass : NSObject
+ (void)myClassMethod;
@end
Objective-C не делает статические свойства так просто, и вы должны прыгать через обручи следующие:
Полный пример:
static NSString* _foo = nil;
@interface MyClass : NSObject
+ (NSString *)getFoo;
+ (void)setFoo;
@end
// implementation of getter and setter
+ (NSString *) getFoo {
return _foo;
}
+ (void) setFoo:(NSString*) value {
if(_foo != value) {
[_foo release];
_foo = [value retain];
}
}
// optionally, you can set the default value in the initialize method
+ (void) initialize {
if(!_foo) {
_foo = @"Default Foo";
}
}
Я не эксперт Obj-C, но это, кажется, работает хорошо в моем коде. Исправьте меня, если что-нибудь здесь выключено.
Хорошо, я понимаю, что для метода, но мне нужно статическое свойство тоже ... – Maxime