2014-07-05 2 views
0

새 메시지가 수신 될 때마다이 두 메서드가 두 번 호출됩니다.XMPPFramework - 메시지를 받았을 때 'didReceiveMessage'가 두 번 호출되었습니다.

- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq 

- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message 

다음 코드로 내 명단 목록을 가져 오기 위해 서버로 요청을 보내고 있습니다.

NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:@"jabber:iq:roster"]; 
XMPPIQ *iq = [XMPPIQ iq]; 
[iq addAttributeWithName:@"id" stringValue:@"buddyRequest"]; 
[iq addAttributeWithName:@"to" stringValue:@"54.186.107.171"]; 
[iq addAttributeWithName:@"type" stringValue:@"get"]; 
[iq addChild:query]; 
[self.xmppStream sendElement:iq]; 

누군가가 내게 문제가있는 곳을 지적 할 수 있습니까?

감사합니다.

+0

첫 번째 코드 블록을 한 번만 호출합니까? 델리게이트 메서드가 호출되면 객체가 동일합니까 (특히 포인터)? – Larme

+0

replay.yes을 가져 주셔서 감사합니다. 나는 한 번만 칼입니다. 음, 스파크에서 내 응용 프로그램으로 메시지를 보낼 때 DidReciveMessage가 2 번 호출되었습니다. 그래서 내 tableview 내 응용 프로그램에서 두 개의 동일한 메시지를 보여줍니다. –

+0

얼마나 많은 시간이 XMPPStream의 대리자를 설정 했습니까? –

답변

3

나는 XMPPStream 두 번 델리게이트를 설정한다고 생각해. 체크를 한 번 해보고. 또한 두 응답을 받았는데, xmppstream 객체의 value.is가 서로 다르다는 것을 확인하십시오. 분명히 두 번 설정해야합니다.