gpt4 book ai didi

objective-c - 在 tabBarView 中管理套接字流

转载 作者:行者123 更新时间:2023-11-28 22:49:58 25 4
gpt4 key购买 nike

我正在使用 UITabBarController 开发应用程序。更具体地说,使用 Storyboard。我希望我的所有选项卡都能够从服务器发送和接收数据。

问题是我不知道怎么做。只有具有 initNetworkCommunications 的第一个选项卡才能从服务器发送和接收。那么我应该怎么做才能让我的应用程序能够从其他选项卡发送和接收?

我发现使用 NSNotificationCentre 来处理数据是可行的,但还有其他方法吗?

这是创建套接字连接的代码

-(void)initNetworkCommunication
{
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"169.254.1.1", 2000, &readStream, &writeStream);

inputStream = (NSInputStream *)readStream;
outputStream = (NSOutputStream *)writeStream;

[inputStream setDelegate:self];
[outputStream setDelegate:self];

[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

[inputStream open];
[outputStream open];

}

假设我有 2 个选项卡。第一个选项卡有一个连接按钮,用于调用 initNetworkCommunication。从这个选项卡我可以发送和接收数据。但是我如何处理另一个选项卡?有没有办法将此连接链接过来?

我尝试导入彼此的 Controller 并使用 [FirstController sendMessage];来自 secondViewController 但似乎不起作用。

最佳答案

创建一个单例很好,我所做的不是创建一个类函数(这将强制您的网络在每次切换选项卡时重新初始化连接)我将 networkconnector 设置为自定义实现的属性标签栏:

#import <Foundation/Foundation.h>
#import "NetworkController.h"

@interface NetworkStorageTabBarController : UITabBarController
@property (nonatomic, strong) NetworkController *thisNetworkController;
@end

和实现文件:

#import "NetworkStorageTabBarController.h"

@implementation NetworkStorageTabBarController
@synthesize thisNetworkController;
@end

然后当我加载我的选项卡式 View 时,我在将出现的第一个 View 的 viewWillAppear 中调用它:

//set up networking
NetworkStorageTabBarController *thisTabBar = (NetworkStorageTabBarController *) self.tabBarController;
self.thisNetworkController = thisTabBar.thisNetworkController;
self.thisNetworkController.delegate = self;

到目前为止,这对我来说非常有效。我花了很长时间才弄明白,所以我希望这对您有所帮助!

关于objective-c - 在 tabBarView 中管理套接字流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12242492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com