亲爱的。 我需要在代码中保留一些临时信息。当我访问它时,我立即复制我的类,接收结果作为MutableArray,但我必须在其他方法的代码中使用此数组。 我不喜欢再次制作我的课程的即时副本,bcs这需要内存和处理器时间,但我必须在其他方法中使用其余的数组。 目前我将它保留在阵列控制器中,但我想找到其他更好的方法。 由于某些原因,我不喜欢发送指向此MutableArray的指针作为方法的参数。 ProjectArrays.h:
#import <Cocoa/Cocoa.h>
@interface ProjectArrays : NSObject {
NSMutableArray *myMutableArray;
}
@property (nonatomic, retain) NSMutableArray *myMutableArray;
+(ProjectArrays *)sharedProjectArrays;
@end
ProjectArrays.m:
#import "ProjectArrays.h"
#import "SynthesizeSingleton.h"
@implementation ProjectArrays
SYNTHESIZE_SINGLETON_FOR_CLASS(ProjectArrays)
@synthesize myMutableArray;
- (void)dealloc {
// Clean-up code here.
[myMutableArray release];
[super dealloc];
}
@end
AppDelegate.m:
[[ProjectArrays sharedProjectArrays].myMutableArray addObject:@"Test"];
NSLog (@"This is test first point:%@",[[ProjectArrays sharedProjectArrays].myMutableArray objectAtIndex:0]);
2010-11-21 19:26:18.636 snow [14523:a0f]这是测试第一点:( null)
看起来像代码无关心对象。
答案 0 :(得分:1)
尝试使用单例模式。创建一些单例类并保留环境变量。
这是有用的标题文件:http://snipplr.com/view/32737/synthesizesingleton-definition-header/
它会帮助你迅速创建单身人士。
<强>编辑:强>
以下是您要使用的单身人士
//YourSingletonClassName.h
#import <Foundation/Foundation.h>
@interface YourSingletonClassName : NSObject {
NSMutableArray *myMutableArray;
}
@property (nonatomic, retain) NSMutableArray *myMutableArray;
+ (YourSingletonClassName *)sharedYourSingletonClassName;
@end
//YourSingletonClassName.m
#import "YourSingletonClassName.h"
#import "SynthesizeSingleton.h"
@implementation YourSingletonClassName
SYNTHESIZE_SINGLETON_FOR_CLASS(YourSingletonClassName)
@synthesize myMutableArray;
- (id) init
{
self = [super init];
if (self != nil) {
self.myMutableArray = [NSMutableArray new];
}
return self;
}
- (void) dealloc {
[myMutableArray release];
[super dealloc];
}
@end
你可以在YourSingletonClassName
之间的任何地方拨打[YourSingletonClassName sharedYourSingletonClassName];
,你不应该分配/初始化它,例如:
[[YourSingletonClassName sharedYourSingletonClassName].myMutableArray addObject:@"some_object_to_add"];
请谷歌搜索单身模式并深入了解对象概念。