1

我想知道是否可以将输入流的委托设置为另一个类。到目前为止,我遇到的所有示例都是 self: [inputStream setDelegate:self]。我想将委托设置为另一个类,例如ViewController非自我。提前致谢。

4

2 回答 2

2

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

@interface ViewController : NSOperation<NSStreamDelegate>
...

-

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

例如

更新:

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

例如:

// 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];

或者一个单一的解决方案,你总是只打电话

TCPConnection *connection = [TCPConnection sharedInstance];

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

于 2013-09-03T10:55:06.370 回答
0

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

于 2013-09-03T10:53:39.767 回答