委托不在单例中工作[关闭]

2024-02-04

为了在多个视图上建立网络连接,我创建了一个单例网络控制器来处理服务器和客户端之间的数据。不幸的是,它不起作用,因为委托方法没有从我的单例调用到另一个视图。在我的代码下面:

** 单例是 SocketIOConnection.h 和 .m

//
//  SocketIOConnection.h

#import <Foundation/Foundation.h>
#import "SocketIO.h"
#import "SocketIOPacket.h"

@protocol SocketIOConnectionDelegate <NSObject>
@required
- (void) receivedPacket:(id)packet;
@end

@interface SocketIOConnection : NSObject <SocketIODelegate> {

    SocketIO *IO;
    id <SocketIOConnectionDelegate> delegate;

}

@property (nonatomic, retain) IBOutlet SocketIO *IO;
@property (retain) id <SocketIOConnectionDelegate> delegate;


+ (SocketIOConnection *)sharedSingleton;

@end



//
//  SocketIOConnection.m

#import "SocketIOConnection.h"

@implementation SocketIOConnection

@synthesize IO, delegate;

static SocketIOConnection *shared = NULL;

-(id)init {
    if (self = [super init]) {
        IO = [[SocketIO alloc] initWithDelegate:self];
        [IO connectToHost:@"domain.com" onPort:443];
    }
    return self;
}

+ (SocketIOConnection *)sharedSingleton
{
    @synchronized(shared)
    {
        if ( !shared || shared == NULL )
        {
            // allocate the shared instance, because it hasn't been done yet
            shared = [[SocketIOConnection alloc] init];
        }

        return shared;
    }
}

-(void)socketIO:(SocketIO *)socket didReceiveEvent:(SocketIOPacket *)packet {
    NSLog(@"Delegating received packet..");
    [delegate receivedPacket:packet.dataAsJSON];
}

@end

这是我的单例的代码,下面我将发布我的 viewcontroller.h 和 .m 的代码

//
//  ViewController.h

#import <UIKit/UIKit.h>
#import "MBProgressHUD.h"
#import "SocketIOConnection.h"

@interface ViewController : UIViewController <MBProgressHUDDelegate, SocketIOConnectionDelegate>
{
    MBProgressHUD   *HUD;
}

@property (nonatomic, retain) SocketIOConnection *IOConnection;

@end



//
//  ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController {
    NSDictionary *operatorData;
}

@synthesize SESSION, IOConnection;

#pragma mark - view Did Load, View Will Appear & didReceiveMemoryWarning

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

}

-(void)viewWillAppear:(BOOL)animated {

    IOConnection    = [SocketIOConnection sharedSingleton];

    // fire auth function to verify the operator and sign him in.
    NSMutableDictionary *tokenAndLicense = [[NSMutableDictionary alloc] init];
    [tokenAndLicense setValue:[operatorData objectForKey:@"token"] forKey:@"__ca.token"];
    [tokenAndLicense setValue:[operatorData objectForKey:@"license"] forKey:@"__ca.license"];
    [IOConnection.IO sendEvent:@"auth" withData:tokenAndLicense];

}

-(void)receivedPacket:(id)packet { <<<< void that should be fired because of the delegate
    NSLog(@"Receive ieks..");
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

为什么我的委托方法没有被调用?


您似乎忘记在代码中设置委托。在视图控制器中调用单例之后,您可能应该立即执行此操作ViewWillAppear.

-(void)viewWillAppear:(BOOL)animated {

    IOConnection    = [SocketIOConnection sharedSingleton];

    IOConnection.delegate = self;

    // fire auth function to verify the operator and sign him in.
    NSMutableDictionary *tokenAndLicense = [[NSMutableDictionary alloc] init];
    [tokenAndLicense setValue:[operatorData objectForKey:@"token"] forKey:@"__ca.token"];
    [tokenAndLicense setValue:[operatorData objectForKey:@"license"] forKey:@"__ca.license"];
    [IOConnection.IO sendEvent:@"auth" withData:tokenAndLicense];

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

委托不在单例中工作[关闭] 的相关文章

  • 所有 UI 前面的透明 UIImageView

    首次启动我的应用程序后 我想向用户展示一些教程 以解释我的应用程序的功能 所以我需要设置一个带有一些箭头和标签的透明 UIImageView 其中主 UI 更具体地说 tabbarcontroler 中的 navigationviewcon
  • 如何使用 NSUndoManager 支持替换 UITextView 中的文本?

    我希望能够以编程方式替换 UITextView 中的某些文本 因此我将此方法编写为 UITextView 类别 void replaceCharactersInRange NSRange range withString NSString
  • 撤消“从选择中创建新组”项目 xcode 4

    我不小心将我的项目添加到了一个组中 现在我无法在 xcode 4 中将其删除 有什么想法吗 如果我将其拖出 它会要求我创建一个工作区 编辑 我在错误报告中向苹果报告了这一点 我会及时向大家通报最新情况 这是一个没有工作空间的项目 关闭 Xc
  • 关于存储库的领域驱动设计问题

    我正在尝试实现 DDD 因此我创建了以下类 用户 域模型 UserRepository 管理对象的中央工厂 UserMapper UserDbTable 映射应用程序功能并提供 CRUD 实现的映射器 我的第一个问题是 当模型需要与持久层通
  • 设置单元格数据后如何更新 UICollectionView 中单元格的大小?

    所以我有一个 UICollectionView 每个单元格中都有不同大小的不同图像 当调用 cellForItemAtIndexPath 时 我使用一种方法更新 UICollectionViewCell 该方法在 Web 上异步获取图像并显
  • ALAssetPropertyDate 返回“错误”日期

    我目前正在开发一个项目 需要读取一些 纬度 经度和日期 EXIF 数据 位置数据似乎是正确的 但我得到的日期似乎是 上次修改日期 日期 CLLocation loc asset valueForProperty ALAssetPropert
  • TabBarController:以不同方向定向视图

    我无法保持当前的观点方向 在下面的设置中 我能够将第一个视图控制器锁定为纵向 将第二个视图控制器锁定为横向或纵向 但是 当我向选项卡控制器添加第二个导航控制器 rootviewcontroller 时 整个项目中的所有视图都将变为横向和纵向
  • 在 Interface Builder 中启用/禁用 NSLayoutConstraints

    NSLayoutConstraint in iOS 8 0 has a BOOL属性称为active这使得动态禁用 启用所述布局约束变得容易 要为视图控制器创建第二个布局集 然后我可以以编程方式启用 禁用它 通过IBOutletCollec
  • Android 和 iOS 中的应用程序文件大小差异

    通过使用两个应用程序分发服务 Android 市场和 Apple 应用程序商店 我发现了一个谜团 Apple 应用程序的文件大小通常大于 Android 应用程序 我似乎找不到任何对这些差异的解释 而且这似乎是一个未触及的主题 我尝试过分配
  • 如何让 iPhone 发出蜂鸣声?

    什么代码可以让我在 iPhone 上发出标准的蜂鸣声 好吧 这取决于您想要什么样的声音 以下是如何使用 AVFoundation 音频框架播放声音 import
  • 从方案加载 url 第一次未处理 - appdelegate 与 viewcontroller

    我的应用程序已成功打开并将参数 从 URL 方案 即 myApp sometextToPrint 设置为AppDelegate类 但每当我想处理它们时 当从该 URL 打开应用程序时 它就会在第一次失败 我在前台检查器中有一个应用程序 它调
  • 获取 iOS Swift 中 UIViewController 的所有列表

    有没有办法获取 iOS Swift 项目中的所有 UIViewController 我想获取所有 UIViewController 的数组并检查特定的 UIViewController 是否存在 我必须找到项目中是否存在特定的 UIView
  • 是否可以快速读取权利文件

    我正在我的应用程序中实现通用深度链接 当我注册不同的域时 它会创建一个 AppName entitlements 文件 我想像 plist 一样读取这个文件的值 I tried if let path NSBundle mainBundle
  • 控制 NSLayoutManager 中自定义文本属性周围的间距

    我有一个习惯NSLayoutManager我用来绘制药丸状标记的子类 我使用自定义属性为子字符串绘制这些标记 TokenAttribute 我会画画没有问题 但是 我需要在范围周围添加一些 填充 TokenAttribute 这样标记的圆角
  • -[MyClassName copyWithZone:] 无法识别的选择器发送到实例

    我的应用程序崩溃了 原因是 MyClassName copyWithZone 无法识别的选择器发送到实例 我有两节课 假设 Class1 和 Class2 Class1 看起来像 Class1 h interface Class1 NSOb
  • 如何模拟应用程序在后台被杀死?

    我试图验证我的应用程序 App1 在启动另一个应用程序 App2 后被系统关闭时行为是否正确 有什么方法可以模拟或强制这种行为吗 在 App2 运行时告诉模拟器模拟内存警告不会执行任何操作 直到 App1 返回前台为止 从调试器中杀死 Ap
  • 使用 CommonCrypto 的 Swift AES 加密

    我正在开发一个 iOS 应用程序代码7 1 with 斯威夫特2 1我正在尝试进行简单的加密AES 128 位 and PKCS7填充使用通用加密库 该代码有效 但每次我尝试投射NSData反对NSString然后对于 String 我得到
  • 将粗体应用于 NSAttributedString 的一部分,同时保留字体大小和外观

    我正在为 iOS 开发一个富文本编辑器 使用UITextView连同一个NSAttributedString 它的功能与传统功能类似 即选择一个区域 单击一个按钮 并将该效果应用于该区域 同时保留文本上的任何其他属性 不幸的是NSAttri
  • 无效的 Swift 支持 - 文件位置不正确

    我一直在尝试将新版本上传到 iTunes Connect 来更新应用程序 我第一次使用 xCode 6 但收到了一封来自 Apple 的电子邮件 内容如下 亲爱的开发者 我们发现您最近交付的 应用程序 存在一个或多个问题 要处理您的交货 必
  • 如何在 JSONKit 中 JSON 序列化 NSDate 字典

    我尝试使用 Jsonkit 和 Apple 的 JSON 序列化器 但没有成功 它不断破坏 geo 属性 该属性是 NSNumbers 的 nsarray Post p Post alloc init p uname mike p like

随机推荐

  • 在 Mac OSX 10.9“Mavericks”上安装 mod_mono

    我正在尝试在 mavericks 上安装 mod mono 但是出现错误 我有最新的单声道版本 支持 Mavericks 第 3 2 3 节 When I configure prefix usr在 mod mono 版本 2 10 中我收
  • HTML5 FileReader API 中 readAsBinaryString() 和 readAsDataURL() 之间的区别

    在HTML5中 引入了FileReader API 我无法真正理解 readAsBinaryString 和 readAsDataURL 之间的区别 我阅读了几个地方的文档 但仍然不能完全理解 有人可以提供一些代码示例来帮助我理解差异吗 如
  • JS Number.MAX_SAFE_INTEGER 和 MAX_VALUE 有什么区别?

    Number MAX SAFE INTEGER 9007199254740991 数量 MAX VALUE 1 7976931348623157e 308 我明白如何MAX SAFE INTEGER是基于 JavaScript 的双精度浮点
  • 输出到 csv 文件将数据转储到浏览器,但不转储到文件

    我尝试在 golang beego 框架中将一些数据输出到 csv 文件 这是我的代码 records make string len devicesData for k v range devicesData records k stri
  • 卸载 Microsoft ASP.NET 和 Web 工具

    我认为此扩展导致我的 Visual Studio 2015 Update 2 出现问题 但我无法卸载它 在 扩展 下 它已列出 但 删除 禁用 按钮呈灰色 我在 删除程序 功能 下也找不到它 我到底如何卸载这个扩展 通过其安装程序卸载 下载
  • VSCode 自动导入不适用于干净的角度项目

    使用 Typescript 3 9 7 拥有一个干净的 Angular 10 项目 一些自动导入和建议不起作用 例如 我开始输入 FormsM 它应该出现 FormsModule 来自动完成并从 angular forms 自动导入 但此选
  • 数据表和并行计算

    继这篇文章之后 R 中的多核和 data table https stackoverflow com questions 14697670 multicore and data table in r 我想知道在使用 data table 时
  • 使用 Mongo ObjectId 类型作为 Meteor 用户 ID

    我正在使用 Meteor 并且有一个关于覆盖 Meteor 用于用户 ID 的类型的默认行为的问题 我希望用户能够由唯一标识 idObjectId 类型的字段 而不是 Meteor 默认的任何类型 字符串 为了实现这种情况 我可以在某个地方
  • Android ListView多项选择在点击后不显示突出显示

    我有一个处于多选模式的ListView 我不想要复选框 我只是希望当我单击项目时 它们可以突出显示以显示选中状态 再次单击时 突出显示将消失并取消选中 所以现在我的问题是我的项目根本没有被检查和突出显示 我不知道为什么 这是代码 mFrie
  • 嵌套文件夹中的 web.config

    我正在尝试在另一个网络应用程序中安装一个应用程序 我有我的 aspx 页面和一些代码 我将其放入主应用程序的 app code 文件夹中 我已经为连接字符串等添加了自己的 web config 文件 但我认为存在冲突 所以我的问题是两个人
  • 如何为 opencart 多商店使用单独的语言文件?

    我使用的是 opencart 版本 1 5 5 1 我们有一个使用 opencart 框架编码的网站 该网站还使用 opencart 多商店功能 所有商店均使用英语 现在的问题是 是否可以针对不同的商店使用不同的语言标签 例如 一家商店与运
  • 如何在日语语言环境中显示反斜杠

    在我的应用程序中 我使用反斜杠作为基于文本的活动指示器的一部分 典型的 序列 我删除了 因为它具有不同的宽度 一切都很顺利 直到我看到我的应用程序在日本计算机上运行 反斜杠被替换为日语字符 我怎样才能避免这种情况 您可以使用 oOo 作为序
  • Cassandra:向表中添加新列

    您好 我刚刚在我的表 my table 中添加了一个新列 Business sys ALTER TABLE my table ALTER business sys TYPE set
  • 有没有办法在界面生成器中制作渐变背景色?

    对于我的应用程序 我使用 TableView 并使用自定义的 UITableViewCells 我通过界面生成器而不是以编程方式自定义了我的单元格 有没有办法在界面生成器中将自定义单元格的背景颜色设置为渐变 Thanks 这适用于 Swif
  • 上传多个文件显示错误代码:3

    这个问题和问的一样here https stackoverflow com questions 19275268 phonegap file transfer of picture fails on every other picture
  • NSTimer 一段时间后在后台停止

    当应用程序进入后台时 我使用 NSTimer 在 1 秒后调用一个方法 并在近 17 分钟后计时器停止工作 当它返回前台时 它再次开始工作 所以请告诉我为什么会发生这种情况以及如何解决该问题 我还尝试使用延迟递归的执行选择器来达到相同的目的
  • 调用 QtGui.QFileDialog.getExistingDirectory 时出错

    在 pyqt 代码中 我试图向用户提升一个对话框并让用户选择一个文件夹 看来 QtGui QFileDialog getExistingDirectory 方法应该能够做到这一点 问题是代码运行后有一些错误消息 D Lib debug pr
  • removeObject 是否释放 NSMutableArray 对象中的对象?

    我想知道当您在数组中使用removeObject 删除对象时 是否正确处理了删除的对象 被移除的对象会被释放吗 NSMutableArray 将释放它 如果这是最后一次保留 它将被释放 从文档中 与 NSArray 一样 NSMutable
  • 我的部分视图中的 Jquery 或 Javascript 问题

    我可以在部分视图中使用 jQuery 或 JavaScript 代码吗 我的部分视图中有一个网格 我试图在该部分视图中使用 jQuery 隐藏一个网格元素 我做不到 但如果我在没有部分视图的情况下使用它 相同的代码就可以工作 有人可以帮我吗
  • 委托不在单例中工作[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 为了在多个