iOS-将输入流的委托设置为另一个类



我想知道是否可以将输入流的委托设置为另一个类。到目前为止,我遇到的所有例子都是关于self的:CCD_ 1。我想将委托设置为另一个类,比如ViewController而不是self。提前谢谢。

如果您的ViewController正在响应NSStreamDelegate,则可以启动控制器的实例并像往常一样设置委托。

@interface ViewController : NSOperation<NSStreamDelegate>
...

-

ViewController *vc = [[ViewController alloc] init];
[inputStream setDelegate:vc];

例如

更新:

TCPConnection类中使用idUIViewController<NSStreamDelegate>变量来保存父级。

例如:

// TCPConnection.h
@interface TCPConnection : NSOperation<NSStreamDelegate>
@property(nonatomic, assign) UIViewController<NSStreamDelegate> parent;
-(id)initWithParent:(UIViewController<NSStreamDelegate> *)p_parent;
...

// TCPConnection.m
-(id)initWithParent:(UIViewController<NSStreamDelegate> *)p_parent
{
    self = [super init];
    self.parent = p_parent;
    return self;
}
// UIViewController<NSStreamDelegate>.m
TCPConnection *connection = [[TCPConnection alloc] initWithParent:self];

或者一个singlton解决方案,您总是只调用

TCPConnection *connection = [TCPConnection sharedInstance];

并且只有一个此类的实例。在大多数情况下,最好的方式;)

您可以对委托进行类型转换,并将其设置为某个特定的委托,然后调用该委托。

相关内容

  • 没有找到相关文章

最新更新