首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法浏览NSOutputStream的文章:MaxLength:

无法浏览NSOutputStream的文章:MaxLength:
EN

Stack Overflow用户
提问于 2014-11-29 07:16:58
回答 1查看 134关注 0票数 0

在实际编写NSOutputStream之前,我需要编写自定义数据。

为了执行swizzling代码,我创建了一个类别NSOutputStream(SwizzleWrite),它包含以下内容:

代码语言:javascript
复制
SEL originalSelector = @selector(write:maxLength:);
SEL swizzledSelector = @selector(swizzledWrite:maxLength:);

Method originalMethod = class_getInstanceMethod([NSOutputStream class], originalSelector);
Method swizzledMethod = class_getInstanceMethod([self class], swizzledSelector);

method_exchangeImplementations(originalMethod, swizzledMethod);

然后创建Inout & Output流: CFStreamCreatePairWithSocketToCFHost(kCFAllocatorDefault,hostRef,80,&readStream,&writeStream);

代码语言:javascript
复制
inputStream = (__bridge_transfer NSInputStream *)readStream;
outputStream = (__bridge_transfer NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];

但是现在当控件到达handleEvent:委托时,特别是在: outputStream写:rawstring:sizeof(Rawstring);,我没有在swizzledWrite:maxLength上获得它:

我在这里做错什么了?

PS:我已经读到过,swizzling的方法并不是对Appstore友好的,但我也读过它们被接受的案例。

EN

回答 1

Stack Overflow用户

发布于 2014-11-29 08:03:42

你为什么觉得这是最好的选择?听起来像一个子类会好得多。对于流的子类有一些棘手的部分,但是请看一下这里

如果您决心要工作,您是否设置了断点并确保您的swizzling选择器不是零?如果你把签名搞错了

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27199916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档