如之前所說,建議建立一個XMPPStream單例對象,然后再在這個單例對象中進行模塊添加,當然使用其他你認為合適的方式進行下面的模塊添加也是OK的
XEP-0054:vcard-temp(電子名片)
1,導入頭文件,最后一個頭文件是vCard相關的頭像模塊
#import "XMPPvCardTempModule.h"
#import "XMPPvCardTemp.h"
#import "XMPPvCardCoreDataStorage.h"
#import "XMPPvCardAvatarModule.h"
2, 模塊添加
//添加vCard模塊
_vCardStorage = [XMPPvCardCoreDataStorage sharedInstance];
_vCardModule = [[XMPPvCardTempModule alloc] initWithvCardStorage: self.vCardStorage];
[self.vCardModule activate:_xmppStream];
_vCardAvatorModule = [[XMPPvCardAvatarModule alloc] initWithvCardTempModule:self.vCardModule];
[self.vCardAvatorModule activate:_xmppStream];
3,模塊使用:
如果需要使用模塊,需要把模塊相應的對象暴漏到頭文件中方便我們之后調(diào)用
在本模塊中需要暴漏的是XMPPvCardTempModule對象,因為XMPPvCardTempModule對象下面有一個myvCardTemp屬性,可以直接對其取值,或者賦值后更新,具體如下
//1,取出myvCardTemp對象
XMPPvCardTemp *myvCard = [IMStream sharedStream].vCardModule.myvCardTemp;
//2,進行相應的操作
myvCard.nickname = @"ivanl003";
myvCard.photo = UIImagePNGRepresentation([UIImage imageNamed:@"addressbook_seleted"]);
//3,更新數(shù)據(jù)到數(shù)據(jù)庫和服務器
[[IMStream sharedStream].vCardModule updateMyvCardTemp:myvCard];
4,釋放模塊,當你不需要再使用這個模塊的時候可以釋放掉這個模塊(在單例中貌似沒有這個必要,可以在控制器死亡的時候進行釋放,具體放在那里看具體情況)
//首先凍結模塊
[_vCardModule deactivate];
//然后把對象設置為nil
_vCardStorage = nil;
_vCardModule = nil;
_vCardAvatorModule = nil;