我想知道是否可以将输入流的委托设置为另一个类。到目前为止,我遇到的所有示例都是 self:
[inputStream setDelegate:self]
。我想将委托设置为另一个类,例如ViewController
非自我。提前致谢。
问问题
1768 次
2 回答
2
如果您ViewController
正在响应NSStreamDelegate
,则可以启动控制器实例并照常设置委托。
@interface ViewController : NSOperation<NSStreamDelegate>
...
-
ViewController *vc = [[ViewController alloc] init];
[inputStream setDelegate:vc];
例如
更新:
在类中使用id或UIViewController<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 回答