相关疑难解决方法(0)

在objective-c中定义一个常量

我想在objective-c中定义一个常量.

以前我有以下功能:

+(NSString *) getDocumentsDir {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
    NSString *documentsDir = [paths objectAtIndex: 0];
    paths = nil;
    return documentsDir;
}
Run Code Online (Sandbox Code Playgroud)

我想只定义一个常量"Documents_Dir" - 当函数被调用时,之后访问以前创建的值.

我尝试了以下代码,但没有用:

#define getDocumentsDir \
{   \
#ifdef Documents_Dir    \
return Documents_Dir;   \
#else   \
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);  \
NSString *documentsDir = [paths objectAtIndex: 0];  \
#define Documents_Dir [paths objectAtIndex: 0]; \
paths = nil;    \
return Documents_Dir;   \
#endif  \
}   \
Run Code Online (Sandbox Code Playgroud)

我对预编译器指令不太满意,所以任何帮助都将不胜感激.

constants objective-c

16
推荐指数
2
解决办法
3万
查看次数

如何将NSArray用作全局常量?

我正在使用一组Constant.m文件,每个目标一个,为每个目标定义特定的东西.例如:

// Constants.h
extern NSString * const kDatabaseFileName;
//Constants.m
NSString * const kDatabaseFileName = @"target_one.sqlite";
Run Code Online (Sandbox Code Playgroud)

我还想为每个目标定义一个NSArray:

NSArray * const kLabelNames = [[NSArray alloc] initWithObjects:
    @"nameLabel", @"addressLabel", nil];
Run Code Online (Sandbox Code Playgroud)

但是这给出了"错误:初始化元素不是常数".使用'arrayWithObjects`也不起作用.这是因为我的数组中的字符串不是常量吗?

如何将数组设置为全局常量?谢谢.

arrays iphone global constants objective-c

11
推荐指数
4
解决办法
2万
查看次数

Objective-c静态NSArray初始化器

我有这个代码(较大部分的小块 - 只是这里显示的麻烦部分):

#define kSizeLarge @"large"

-(void)determineBestFileSizeWithLimit:(int)limit
{
    static NSString *largeName = kSizeLarge;
    static NSArray *nameArray = @[kSizeLarge];
    ...
}
Run Code Online (Sandbox Code Playgroud)

编译器喜欢第一个静态变量而讨厌第二个静态变量

Initializer element is not a compile-time constant
Run Code Online (Sandbox Code Playgroud)

从第二行删除静态使编译器感到高兴.

我做错了什么/不正确?

objective-c literals ios

6
推荐指数
1
解决办法
6765
查看次数

用于传递NS样式的c风格数组的Objective-c语法

将包含c样式数组的最佳语法传递NSString*给objective-c方法是什么?这是我目前正在使用的:

- (void) f:(NSString **) a {

}

- (void) g {
    NSString* a[2] = {@"something", @"else"};
    [self f:a];
}
Run Code Online (Sandbox Code Playgroud)

arrays methods syntax objective-c parameter-passing

3
推荐指数
1
解决办法
1637
查看次数