2014-06-24 1 views
-1

나는 블록을 가지고 있는데 그 결과는 messageNSArray을 포함하고 있습니다. 이 어레이에 액세스하려면 여러 번 UIViewControllers해야합니다. 싱글 톤을 사용하고 싶습니다만이 배열은 정적이 아니므로 클라이언트는 언제든지 새 메시지를받을 수 있습니다. 그래서 싱글 톤 내부의 배열을 업데이트 할 수 있습니까? 또는 가져온 모든보기에서 다시로드하십시오.싱글 톤에서 NSArray 업데이트하기

전반적으로 어떻게 할 수 있는지 잘 모르겠습니다. 다음은 다른 뷰에서 사용해야하는 변수를 보여주는 코드입니다. 어떤 제안이라도 환영 받으면 싱글 톤이없는 더 쉬운 솔루션이 가장 좋을 것입니다.

SampleViewController.m :

PNChannel *my_channel = [PNChannel channelWithName:currentChannel.user 
          shouldObservePresence:YES]; 

[PubNub requestHistoryForChannel:my_channel from:nil to:nil limit:100 reverseHistory:NO withCompletionBlock:^(NSArray *message, PNChannel *channel, PNDate *fromDate, PNDate *toDate, PNError *error) { 

//i wanna access the message array in other view controllers 


}]; 
+1

기타 질문 (http : // 여기 다시 열어야합니다 - 이미 4 개 투표를 다시 열었 기 때문에 stackoverflow.com/questions/24355605/access-an-nsarray-from-every-view-controller/24355733?noredirect=1#comment37723337_24355733) 여기를 다시 열어야합니다. . 새로운 질문을 게시하는 대신 기다려주십시오. –

+0

@AbhiBeckert 죄송합니다. 조금 다른 상황에서 부탁드립니다. 그러나 내 다른 질문을 처리 주셔서 감사합니다. – rihe

+0

왜 다시 같은 질문을 하시겠습니까? 다른 버전에는 많은 토론이있었습니다. 이해하지 못하면 공부하는 데 더 많은 시간을 할애해야한다는 표시입니다. –

답변

0

나는 싱글이를위한 좋은 방법이라고 생각합니다. 그 이외에 appdelegate 속성을 사용하여 값을 저장할 수 있으며 어떤 클래스에서든지 [[[UIApplication SharedApplication] delegate] yourSharedProperty]으로 호출 할 수 있습니다.이 경우에도 싱글 톤을 사용하지만 앱 자체가 앱이됩니다.

+2

코드를 훨씬 더 못생긴 '(MyAppDelegate *)'로 델리게이트를 캐스팅하는 것을 잊어 버렸습니다. 정적 메서드를 선호하기 때문에 그냥 [MyAppDelegate mySharedProperty]' –