2013-08-09 4 views
0

저는 인터넷에서 이미 몇 가지를 읽었지만, 문제는 제가 싱글 톤을 올바르게 사용하는 방법을 이해해야한다는 것입니다.객관적인 C에서 싱글 톤을 올바르게 사용하십시오.

myVariable = [NSEntityDescription insertNewObjectForEntityForName:@"Entity" 
      inManagedObjectContext:context]; 

내가 myVariable을 보존하고 다른 뷰에서 사용해야하고, 내가 사용하려는 경우 나는 이것이 가장 좋은 방법은 어딘가에 읽어 내 문제는 내 응용 프로그램에서 어떤 점에서 나는 다음과 같습니다 무엇이며, 내 모든 의견을 통해 변수. 나는이 예제를 따라했지만 난 정말 그것을 사용하는 방법을 알고하지는 누군가가 나에게 그것을 설명 할 수?

@interface DataLoader : NSObject { 
    NSString *someProperty; 
    //(i think i need myVariable here, and not type NSString) 
} 

@property (nonatomic, retain) NSString *someProperty; 

+ (id)sharedManager; 
@end 


@implementation DataLoader 

+(id)sharedInstance { 
    static dispatch_once_t p=0; 
    __strong static id _sharedObject = nil; 
    dispatch_once(&p, ^{ 
    _sharedObject = [[self alloc]init]; 
    }); 

return _sharedObject; 
} 

@end 

를 다른 뷰를 사용하는 방법 난 다음 인 myVariable이 설정할 수 있습니다?

안부

+0

나는 당신이하고있는 일을 꽤 잘 알고 있다고 생각하지 않으며, 싱글 톤을 사용하면 그것을 고쳐주지 않을 것입니다. –

답변

1

일반적인 방법은 컨트롤러들이 탐색 스택 예에 가압 될 때마다, 다음 하나의 변수를 전달하는 것이다 in prepareForSegue:. 보기 컨트롤러를 계속 유지하려면 강력한 @property을 지정하십시오.

SomeViewController *nextVC = segue.destinationController; 
nextVC.myVariable = self.myVariable; 

이는 관리 대상 객체 컨텍스트를 사용하는 Apple의 샘플 코드의 많은 경우에서 그렇습니다. 확실히 좋은 패턴입니다.

+0

안녕 Mundi, 대답 해줘서 고마워. 나는 그 해결책을 보았지만 마스터 디테일 애플리케이션에 있다면 어떻게 사용합니까? 나는 마스터 버튼을 사용할 때마다 항상 마스터 뷰 클래스에 직접 가기 때문에이 질문을하고있다. 모든보기가 연결되어 있고보기가 여러 개인 경우보기 A에서 B로 전달하여 값을 전달할 수는 없습니다 ... A에있을 수 있고 D로 갈 수 있습니다 ... 원하는 값으로 어떻게됩니까? 보존하기 위해?. 미안해, 이걸 사용하지 않아도된다. 힌트를 줄 수 있니? 감사합니다 – Japa

+1

정확히 작동하는 방법입니다. 'prepareForSegue'에서 식별자에 의해 segues를 구별하고 그에 따라 변수를 전달할 수 있습니다. – Mundi

+0

Hello Mundi, 늦게 답변을 드려 죄송합니다. 마스터보기 클래스에서 prepareforsegue 메소드를 사용할 것입니다. 도와 주셔서 감사합니다. 감사합니다 – Japa

관련 문제