2011-04-06 5 views
1

나는 NSMutableArray 싱글 톤을 구현하기 위해 생각해 낸 코드를 정리하는 데 도움을 얻고 싶습니다.NSMutable 싱글 톤 질문

.H 파일은

@interface MySingleton : NSObject { 

    NSMutableArray *globalArray; 

} 

+ (MySingleton *)instance; 

- (NSMutableArray *) getArray; 

- (void) addArray:(NSObject *)arrayToAdd; 

- (id) init; 



.m file 

@implementation MySingleton 


- (id) init 
{ 
    self = [super init]; 
    globalArray = [[NSMutableArray alloc] init]; 
    return self; 
} 


+ (MySingleton *)instance { 

    static MySingleton *instance; 

    @synchronized(self) { 
     if(!instance) { 
      instance = [[MySingleton alloc] init]; 

     } 
    } 
    return instance; 
} 


- (NSMutableArray *) getArray{ 
    return globalArray; 
} 



- (void) addArray:(NSMutableArray *)arrayToAdd 
{ 

    [globalArray addObject:arrayToAdd]; 

} 

콘솔 카운트 3 1.

생각을 표시

MySingleton *prodInstance = [MySingleton instance]; 
[prodInstance addArray:tmpArray]; 
NSLog(@"cnt tmpArray %i",[tmpArray count]); 
NSLog(@"cnt singleton %i",[[prodInstance getArray] count]); 

someviewcontroller.m는 [prodInstance의 getArray]은 tmpArray 같은 것 .

는 문제가 addArray 방법은 당신이 원하는 것을 분명히 아니다 globalArray, 내부 tmpArray을 가하고 당신에게

답변

1

감사드립니다.

나는 실제로 addArray을 가질 이유가 없다고 생각합니다. getArray을 호출하여 전역 배열을 얻고 작업하십시오. 예를 들어 :

// add all objects in tmpArray to prodInstance global array 
[[prodInstance getArray] addObjectsFromArray:tmpArray]; 
+0

빠른 답변 감사드립니다. – user643097

0

-addArray:에서는 글로벌 배열의 단일 요소으로 배열 인수 arrayToAdd를 추가하고 있습니다. 대신 배열 인수의 모든 요소를 ​​추가, 그래서 변경을 고려 인수가 변경 가능한 배열을 할 필요가 없기 때문에, 또한

[globalArray addObject:arrayToAdd]; 

[globalArray addObjectsFromArray:arrayToAdd]; 

을 대체 할 것 같습니다 매개 변수 유형은 NSArray *입니다.