iphone - 从其他常量构建常量变量列表

标签 iphone objective-c ios global-variables constants

我刚刚阅读了所有objective-c 全局常量变量 问答,但我发现它们不适合我的问题。

我需要一个这样的变量列表:

NSString *baseURL = @"http://example.org";
NSString *mediaURL = @"http://example.org/media/";
NSString *loginURL = @"http://example.org/login/";
NSString *postURL = @"http://example.org/post/";
etc.

当然我不能使用这段代码,因为这是一个非常糟糕的方法,如果我需要更改基本 url,我必须更改所有变量。 因为我需要从应用程序的每个类访问这些变量,所以我用这种方法将它们声明为全局变量:

// Constants.h
extern NSString *const baseURL;
extern NSString *const mediaURL;
extern NSString *const loginURL;
extern NSString *const postURL;


// Constants.m
NSString *const baseURL = @"http://example.org";
NSString *const mediaURL = [NSString stringWithFormat:"%@%@", baseURL, @"/media/"];
NSString *const loginURL = [NSString stringWithFormat:"%@%@", baseURL, @"/login/"];
NSString *const postURL = [NSString stringWithFormat:"%@%@", baseURL, @"/post/"];

但是我不能这样做,因为我得到这个错误:

Initializer element is not a compile-time constant

发生这种情况是因为对象在运行时工作。

现在我的问题是,我希望一劳永逸,在网络应用程序中处理这种非常常见的情况的好方法是什么?

我认为使用一个类(或单例类)来处理常量变量有点矫枉过正,而且每次我需要它时都使用类似 [MyClass globalVar] 的东西也太冗长了。

关于它的想法?

最佳答案

我知道这是过时的,但我只是使用预处理器宏并让常量字符串连接处理它。

#define baseURL @"http://example.org"
#define mediaURL baseURL@"/media/"

关于iphone - 从其他常量构建常量变量列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055187/

相关文章:

ios - NSPredicate使用另一个数组过滤数组的数组

ios - 在 numberOfItemsInSection 返回非零项目编号后未调用 UICollectionView cellForItemAtIndexPath

ios - 为什么我必须清理并重新启动项目才能使用 Firebase/Crash 脚本文件运行项目

iphone - 以编程方式创建的窗口出现但不响应触摸事件

iphone - 在 ARC 上使用@property

iphone - 防止 UITabBar 将渐变应用于其图标图像

iphone - NSDictionary 中的 NSDictionary

iphone - PopOver 在 Leftside up+iphone 中打开

ios - 可变数组 iOS 中的最大元素

iphone - 任何关于如何从 uitabbarcontroller 访问 viewcontroller 的代码示例?