Как Вы инициализируете константу в заголовочном файле?
Например:
@interface MyClass : NSObject {
const int foo;
}
@implementation MyClass
-(id)init:{?????;}
Для "публичных" констант вы объявляете их как extern
в вашем заголовочном файле (.h) и инициализируете их в вашем файле реализации (.m).
// File.h
extern int const foo;
затем
// File.m
int const foo = 42;
Рассмотрите возможность использования enum
, если речь идет не об одной, а о нескольких константах, принадлежащих друг другу
Классы Objective C не поддерживают константы в качестве членов. Вы не можете создать константу так, как хотите.
Ближайший способ объявить константу, связанную с классом, - это определить метод класса, который ее возвращает. Вы также можете использовать extern для прямого доступа к константам. Оба они показаны ниже:
// header
extern const int MY_CONSTANT;
@interface Foo
{
}
+(int) fooConstant;
@end
// implementation
const int MY_CONSTANT = 23;
static const int FOO_CONST = 34;
@implementation Foo
+(int) fooConstant
{
return FOO_CONST; // You could also return 34 directly with no static constant
}
@end
Преимущество версии метода класса состоит в том, что ее можно легко расширить для предоставления константных объектов. Вы можете использовать внешние объекты, ну, вы должны инициализировать их в методе инициализации (если они не являются строками).Таким образом, вы часто будете видеть следующий шаблон:
// header
@interface Foo
{
}
+(Foo*) fooConstant;
@end
// implementation
@implementation Foo
+(Foo*) fooConstant
{
static Foo* theConstant = nil;
if (theConstant == nil)
{
theConstant = [[Foo alloc] initWithStuff];
}
return theConstant;
}
@end