ios - XMPPStream Connect 似乎可以工作,但委托(delegate)方法 xmppStreamDidConnect 没有被调用,为什么?

标签 ios objective-c delegates xmpp xmppframework

所以我有一个具有以下接口(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/

相关文章:

ios - block 可以捕获 CoreFundation 对象吗?

iphone - iOS : Save image with custom resolution

ios - Swift:当委托(delegate)类不是直接子类时分配委托(delegate)类?

iphone - 跳过带有委托(delegate)的 View Controller

objective-c - 即使应用程序空闲,NSOutlineView 也会不断更新

C# - 有人能告诉我为什么以及在哪里应该使用委托(delegate)吗?

ios - Alamofire 超时不起作用

ios - 如何快速检查对象属于类或结构

ios - 长时间隐藏 View

ios - 在 Cocos2dx iOS 项目中添加 Google Firebase