Посмотрите на этот Ответ переполнения стека
Вы не можете инициализировать const с результатом другой переменной, даже если этот результат является const.
Один из способов сделать то, что вы хотите, это обернуть определения во флаги:
#ifdef MYFLAG
# NSString * const MY_URL = @"http://myhost/myfolder";
#else
# NSString * const MY_URL = @"http://myotherhost/myfolder";
#endif
Редактировать - Сумасшедшая идея!
Хорошо, так что вы не хотитечтобы вручную настроить кучу URL-адресов.Вот сумасшедшая идея: как насчет того, чтобы создать класс, предоставляющий нужные вам URL?Таким образом, вы можете установить их в одном месте, и у вас есть преимущество, заключающееся в том, что вам нужно только перевести их в URL в одном месте.Например,
//HostURLs.h
#import <Cocoa/Cocoa.h>
@interface HostURLs : NSObject {
@private
NSString *baseURLString;
NSString *myURLString1;
NSString *myURLString2;
}
@property (nonatomic, readonly) NSURL *myURL1;
@property (nonatomic, readonly) NSURL *myURL2;
@end
Тогда вы можете объявить класс
//HostURLs.m
#import "hostURLs.h"
@implementation HostURLs
- (id)init {
// You might want to set this up as as Singleton.
if (!(self = [super init])) {
return nil; // Bail!
}
#ifdef MYFLAG
baseURLString = @"http://myhost/";
#else
baseURLString = @"http://myotherhost/";
#endif
myURLString1 = @"myURL1";
myURLString2 = @"myURL2";
return self;
}
- (NSURL *)myURL1 {
NSString *urlString = [baseURLString stringByAppendingString:myURLString1];
return [NSURL urlWithString:urlString];
}
- (NSURL *)myURL2 {
NSString *urlString = [baseURLString stringByAppendingString:myURLString2];
return [NSURL urlWithString:urlString];
}
@end
Да, это безумие.Но таким образом, вы можете контролировать все ваши URL-адреса в одном месте.