静态数组我用下面的代码来创建在C#中的公共静态数组目标C
public class A{
public static array[] obj;
}
我有另一个类B. 从类BI呼叫 A.ArrayName
,我得到我在课堂上使用数组A.
我想知道,什么是这个目标C
静态数组我用下面的代码来创建在C#中的公共静态数组目标C
public class A{
public static array[] obj;
}
我有另一个类B. 从类BI呼叫 A.ArrayName
,我得到我在课堂上使用数组A.
我想知道,什么是这个目标C
没有特殊的语法此相当。你只需定义一个类方法来返回静态数组。
例如:
@implementation A // note this is in the implementation
static NSArray *array;
+ (NSArray *)array
{
if (!array)
array = [[NSArray alloc] init];
return array;
}
@end
或为混乱的代码,但表现略好(在一个紧密的循环是个好主意,但通常不值得):
@implementation A
static NSArray *array;
+ (void)initialize // this method is called *once* for every class, before it is used for the first time (not necessarily when the app is first launched)
{
[super initialize];
array = [[NSArray alloc] init];
}
+ (NSArray *)array
{
return array;
}
@end
从类访问B
你只是这样做:[A array]
我想建议在NSArray上使用一个类别。我改变了你的需求,使用NSMutableArray作为共享对象。
接口文件:
#import <Foundation/Foundation.h>
@interface NSArray (StaticArray)
+(NSMutableArray *)sharedInstance;
@end
实现文件
#import "NSArray+StaticArray.h"
@implementation NSArray (StaticArray)
+(NSMutableArray *)sharedInstance{
static dispatch_once_t pred;
static NSMutableArray *sharedArray = nil;
dispatch_once(&pred, ^{ sharedArray = [[NSMutableArray alloc] init]; });
return sharedArray;
}
@end
现在你可以使用它作为:
[[NSArray sharedInstance] addObject:@"aa"];
[[NSArray sharedInstance] addObject:@"bb"];
[[NSArray sharedInstance] addObject:@"cc"];
和别的地方:
NSLog(@"%@", [NSArray sharedInstance]);
如果您需要线程安全初始化并仍想懒惰地执行,dispatch_once()是一个好方法。 –
嗯,我从来没有想到这一点。好主意。 –
请参阅我的代码dispatch_once() – vikingosegundo