2010-11-10 56 views
0

亲爱的所有人。 我需要在代码中保留一些临时信息。当我访问它时,我立即复制我的类,接收结果为MutableArray,但我必须在其他方法的代码中使用此数组。 我不喜欢再次做我的课的副本,这需要内存和处理器时间,但我必须在其他方法中使用其余的数组。 目前我保持它在阵列控制器,但我想找到其他更好的方法。 由于某些原因,我不喜欢将指针指向此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雪[14523:A0F]这是测试的第一点:(null)

看起来像代码不能关心对象。

回答

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 sharedYourSingletonClassName];随时随地YourSingletonClassName,你不应该分配/初始化它,如:

[[YourSingletonClassName sharedYourSingletonClassName].myMutableArray addObject:@"some_object_to_add"]; 

请谷歌单身模式和挖掘obj c概念。

+0

你能解释一点吗?我是新手在objective-c。 – Alex 2010-11-10 09:23:48

+0

您应该创建一个包含'NSMutableArray * myMutableArray'属性的单例类。要创建这样一个类,您应该在我提供的链接中包含一个头文件,然后在其'@ implementation'部分调用'SYNTHESIZE_SINGLETON_FOR_CLASS(YourSingletonClassName)',然后可以调用'[YourSingletonClassName sharedYourSingletonClassName] .myMutableArray'你的项目的任何地方(不要忘记包含'YourSingletonClassName.h'只要你想使用你的单身人士)。现在有点清楚了吗? – knuku 2010-11-10 09:46:08

+0

我可以在这个头文件中声明myMutableArray? – Alex 2010-11-10 16:08:39

相关问题