在我的项目中,我定义了这样的网址:
font-size
由于根网址(p
)始终相同,有没有办法将其设置为常量,然后对其余部分使用字符串替换?
例如,在其他文件中,我可以这样做:
#define TERMSURL @"http://127.0.0.1:8000/terms/"
#define PRIVACYURL @"http://127.0.0.1:8000/privacy/"
...
对于我目前的做法,有没有办法做到这一点?
答案 0 :(得分:0)
shared.h
#define TERMSURL @"http://127.0.0.1:8000/terms/"
#define PRIVACYURL @"http://127.0.0.1:8000/privacy/"
#define URL_BASE @"http://127.0.0.1:8000/"
yourClass.m
NSString * stringUrlBase = URL_BASE;
NSString *url1 = [NSString stringWithFormat:@"%@terms/", stringUrlBase];
答案 1 :(得分:0)
当然,你可以做到。不过,我之前看过#define
和NSString const * const
。定义更容易,并且您可能不会通过在整个地方使用常量而不是NSString
的单个不可变实例来保存那么多内存。
一些建议是考虑如何导出NSString
常量。您可能需要EXTERN_PRIVATE
而不是EXTERN
,但我的示例代码将允许您标头的所有客户端读取您在其中声明的字符串常量。
#ifndef constants_h
#define constants_h
// Export the symbol to clients of the static object (library)
#define EXTERN extern __attribute__((visibility("default")))
// Export the symbol, but make it available only within the static object
#define EXTERN_PRIVATE extern __attribute__((visibility("hidden")))
// Make the class symbol available to clients
#define EXTERN_CLASS __attribute__((visibility("default")))
// Hide the class symbol from clients
#define EXTERN_CLASS_PRIVATE __attribute__((visibility("hidden")))
#define INLINE static inline
#import <Foundation/Foundation.h>
EXTERN NSString const * _Nonnull const devBaseUrl;
#endif /* constants_h */
#include "constants.h"
NSString const * _Nonnull const devBaseUrl = @"http://127.0.0.1:8000/";
#import <Foundation/Foundation.h>
#import "constants.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSLog(@"Constant value: %@", devBaseUrl);
// Prints: Constant value: http://127.0.0.1:8000/
}
return 0;
}