Большая скрытая константа в объективе C - PullRequest
0 голосов
/ 30 марта 2011

У меня большая константа (строка NSS со значениями 10 ^ 6). Из-за его размера я хотел бы объявить его в конце исходного файла (поэтому мне не нужно прокручивать его каждый раз, когда я хочу отредактировать свой код). Также из-за его размера я хотел бы, чтобы он был константой, чтобы я мог загрузить его во время компиляции, а не во время выполнения. Кроме того, поскольку я не хочу, чтобы он был доступен для внешних пользователей, я не хочу объявлять его как extern в заголовочном файле.

Я объявил его как константу, используя приведенный ниже код в файле реализации, однако он дает мне «Использование необъявленного идентификатора« огромныйКонстанСтрой »», если я перемещаю его за @ конец реализации (по очевидным причинам) .

NSString *const hugeConstantString = @"a_whooooooole_lotta_characters";

Я проверил это: Константы в Objective-C , но это не сказало мне ничего, что я уже не знал. Может быть, мой мозг зажжен, но: есть ли способ, которым я могу определить эту огромную константу ПОСЛЕ моей реализации и все еще иметь ее доступной? Или если я объявлю его в другом заголовочном файле и импортирую его, будет ли он доступен для других?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 30 марта 2011

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

MyLongStringConstant.h

#define kLongString @"..."

MyClass.h

....
#import "MyLongStringConstant.h"
...
//Do something with kLongString
...

Если вы хотите, чтобы он был доступен в каждом файле вашего приложения, импортируйте заголовок в файл myApp_Prefix.pch приложений, который импортируется в каждый файл.

1 голос
/ 30 марта 2011

Я собираюсь сохранить разговор о том, почему вы это делаете, и просто опубликовать простое решение для вас. Спасибо Томми в комментариях, здесь более простая версия.

#import "LargeStringTest.h"


@implementation LargeStringTest

//Declare the string
static NSString *hugeConstantString;

- (id)init {
    self = [super init];
    if (self) {
        NSLog(@"Large String %@", hugeConstantString);
    }
    return self;
}

//Place all other code here

//Assign the string
static NSString *hugeConstantString = @"a_whooooooole_lotta_characters";

@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...