所以我有一个具有以下接口(interface)的类:
#import <UIKit/UIKit.h>
#import "XMPPStream.h"
@interface SignInViewController : UIViewController
@property (strong, nonatomic) IBOutlet UITextField *UserNameTextField;
@property (strong, nonatomic) IBOutlet UITextField *PassWordTextField;
@property (strong, nonatomic) XMPPStream *myStream;
- (IBAction)SignInButtonPress:(UIButton *)sender;
@end
然后,如果评估了 SignInButtonPress
方法,我有以下代码:
- (IBAction)SignInButtonPress:(UIButton *)sender {
self.myStream = [[XMPPStream alloc]init];
[self.myStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
NSString *jid = self.UserNameTextField.text;
jid = [jid stringByReplacingOccurrencesOfString:@"@" withString:@"(at)"];
self.myStream.myJID = [XMPPJID jidWithString:self.UserNameTextField.text];
//stream.jid = self.UserNameTextField.text;
self.myStream.hostName = @"myAWSDNS.us-west-2.compute.amazonaws.com";
NSError *error = [[NSError alloc]init];
if ([self.myStream connectWithTimeout:0 error:&error] == YES)
{
NSLog(@"DId Connect!");
//[self performSegueWithIdentifier:@"Move" sender:sender];
}
else
{
NSLog(@"ou");
}
}
self.myStream connectWithTimeout
似乎运行正常,调用后错误为 nil
,我在日志中得到“Did Connect”。
但是,即使我将 self 添加为 xmppStream
的委托(delegate)(参见方法开头),委托(delegate)方法
-(void) xmppStreamDidConnect:(XMPPStream *)sender
没有被调用,即使我在同一个类中实现了它:
-(void) xmppStreamDidConnect:(XMPPStream *)sender
{
if ([sender authenticateWithPassword:self.PassWordTextField.text error:NULL] ==YES)
{
NSLog(@"authed!");
[self performSegueWithIdentifier:@"move" sender:sender];
}
else
{
}
}
为什么没有调用该方法,我该如何排查和/或解决这个问题?
最佳答案
当我将 XMPP 框架与 Swift 一起使用时,我不确定这是否对您有帮助。为了让它在我的应用程序中运行,我必须确保实现 XMPPStreamDelegate 协议(protocol)以及从 NSObject 继承(当您继承自UIViewController) 像这样:
swift :
class SignInViewController: UIViewController, XMPPStreamDelegate
objective-C
@interface SignInViewController : UIViewController <XMPPStreamDelegate>
关于ios - XMPPStream Connect 似乎可以工作,但委托(delegate)方法 xmppStreamDidConnect 没有被调用,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27455284/