2014-03-30 4 views
0

sourceObject와 destinationObject는 모두 SameClass의 인스턴스입니다. SameClass는 싱글 톤입니다. 본질적으로 같은 객체는 두 개의 서로 다른 이름을 가지며 메소드 레벨에서 동작이 다릅니다. 내가 코드 줄이 있습니다 NSInvocation - 메시지가 내부에서 전달 된 사람을 알아내는 방법 forwardInvocation :

//some code in some place 
    [singleton1Object increase: 20]; 


//some code in a completely different place 
    [singleton2Object increase: 40]; 

어느 singleton1Object 또는 singleton2Object 구현 증가 (여기에 대칭이를, 나는 그들이 같은 메소드를 호출하지만 두 개의 서로 다른 상황에서 두 개의 서로 다른 장소에서 필요) : 대신 둘 에, 그리고 행 노선의 내 결정의 기초 :

forwardInvocation 
- (void)forwardInvocation:(NSInvocation *)anInvocation 
{ 
    //determine where the message came from 
} 

이 코드 singleton1Object 또는 singleton2Object 처음받은 인상의 어느 부분을 결정하는 방법은 없나요 각각의 방향 각 (다른 개체) 메시지를 직접 사용 내부에서 forwardInvocation :?

참고 : Singleton은 보낸 사람과받는 사람 모두에게 메시지를 보냅니다. 그는 코드에서 두 개 이상의 이름으로 참조하고, 변수 두 개에 저장하며, 메소드에서 메소드로 이동할 때까지이 작업을 계속 수행하여 이해할 수없는 경우 다른 메시지로 전달합니다. 내가 코드에서 주로 singleton1Object 및 singleton2Object로 결정하거나 다른 기술을 통해 메시지를 전달해야하는 위치를 알 수 있습니다. 수정 된 질문에 대한 자세한 내용은 편집을 참조하십시오.

+0

발신자에게 전달 전 또는 착신 전환 중입니까? – CodaFi

+0

싱글 톤은 보낸 사람과받는 사람 모두에게 메시지를 보낸다. 그는 자신이 이해하지 못하는 방법이 될 때까지 계속이 작업을 계속 수행하여 메시지를 다른 대상으로 전달합니다. 코드에서 주로 singleton1Object 및 singleton2Object에 의해 결정되는 곳에서 메시지를 전달해야하는 위치를 알 수 있습니다. 수정 된 질문에 대한 자세한 내용은 편집을 참조하십시오. – unmircea

+0

나는이 혼란의 길을 피하기보다는 디자인을 바꾸는 것이 좋습니다. _two different_ names에 의해 참조되는 객체, 'self'도 아닌 객체는 나에게 소리가 나지 않습니다. 그것은 아마도 싱글 톤을 갖지 말아야한다는 것을 의미하지만 클래스의 두 인스턴스 또는 두 개의 분리 된 파생 클래스를 가질 수도 있습니다. –

답변

0

forwardInvocation에서 self은 메시지의 수신자입니다.

호출 객체에는 메시지의발신자 정보가 포함되어 있지 않습니다.

+0

흠 ... 나는 메시지가 전송 된 곳에서 정보를 얻으 려했다. 그런 다음 [anInvocation 대상]에는 무엇이 포함되어 있습니까? – unmircea

+0

@unmircea : 저는 전화로이 글을 쓰고 있습니다. 그래서 현재 더 많은 것을 말할 수는 없습니다. 아마도 당신의 질문을 오해했을 것입니다. '자기 '검사 해봤 니? –

+0

괜찮아, 내 이상한 처지에 대한 자세한 내용으로 내 질문을 업데이트했다. 시간이 좀 걸릴 것입니다 ... – unmircea

관련 문제