我需要一个常量的字符串数组.使用#define是个好主意?
例如:
#define rows [NSArray arrayWithObjects: @"NameRowA",@"NameRowB",@"NameRowC", nil]
#define KEY_ROWA [columnas objectAtIndex:0]
#define KEY_ROWB [columnas objectAtIndex:1]
#define KEY_ROWC [columnas objectAtIndex:2]
Run Code Online (Sandbox Code Playgroud)
我需要访问字符串数组和该数组的元素.
我已经读过了,(我不知道是不是真的)用这种方式创建一个新的NSArray,当它被使用时,我想这个数组已经发布了,所以我认为这很好,因为你只使用那部分内存什么时候需要它.
小智 7
使用单例,它只是几行代码.您只需要一个静态单例,以及一个用于检索它的静态方法(并设置一次).
您的.m文件应包含以下内容:
@implementation MyClass
static NSArray *mySingletonArray; // this will be your array
+ (NSArray *)mySingletonArray // this is the static method for accessing your array
{
if (nil == mySingletonArray) {
mySingletonArray = [NSArray arrayWithObjects:@"firstString", @"secondString", nil];
}
return mySingletonArray;
}
Run Code Online (Sandbox Code Playgroud)
使用静态访问方法[MyClass mySingletonArray]从您的数组中获取所需内容,例如
NSLog("%@", [[MyClass mySingletonArray] objectAtIndex:0]);
Run Code Online (Sandbox Code Playgroud)
我不认为你想用#define它.
在您的示例中,没有使用此代码生成的常量字符串数组.rows在您的代码中使用每一次,将分配一个新的NSArray.此外,KEY_ROWA引用columnas,但不在行define中.我猜你有类似的东西
NSArray *columnas = rows;
Run Code Online (Sandbox Code Playgroud)
这和之间确实没有什么区别
NSArray *columnas = [NSArray arrayWithObjects: @"NameRowA",@"NameRowB",@"NameRowC", nil];
Run Code Online (Sandbox Code Playgroud)
但第二行更为明显.同样的情况KEY_ROWA- 对objectAtIndex调用会更明显,宏不会给你任何东西.
我不确定你需要什么,但是如果你需要一个类中的共享常量字符串数组,你可以声明它+而不是-在开头,并分配一次(这是一个类变量而不是一个实例变量).更多信息:
| 归档时间: |
|
| 查看次数: |
13796 次 |
| 最近记录: |