桥后将objective-c指针类型nsoutputstream*转换为c指针类型cfwritestreamref异常

桥后将objective-c指针类型nsoutputstream*转换为c指针类型cfwritestreamref异常,objective-c,automatic-ref-counting,Objective C,Automatic Ref Counting,我正在从事一个项目,该项目通过smtp发送照片。一开始,自动引用计数被禁用,项目运行没有问题。当我启用自动引用计数时,我得到了许多编译错误。最常见的一种是将Objective-C指针类型“NSOutputStream*”转换为C指针类型CFWriteStreamRef(也称为“struct_CFWriteStream*”需要桥接转换),转换的行数为 if (CFWriteStreamWriteFully(( CFWriteStreamRef)outputStream, (const uint8_

我正在从事一个项目,该项目通过smtp发送照片。一开始,自动引用计数被禁用,项目运行没有问题。当我启用自动引用计数时,我得到了许多编译错误。最常见的一种是将Objective-C指针类型“NSOutputStream*”转换为C指针类型CFWriteStreamRef(也称为“struct_CFWriteStream*”需要桥接转换),转换的行数为

if (CFWriteStreamWriteFully(( CFWriteStreamRef)outputStream, (const uint8_t *)[ehlo  
UTF8String], [ehlo lengthOfBytesUsingEncoding:NSUTF8StringEncoding]) < 0)                       
if(cfwritestreamwritevely)((CFWriteStreamRef)输出流,(const uint8_t*)[ehlo
UTF8String],[ehlo LengthofBytes使用编码:NSUTF8StringEncoding])<0)
当我写作时 if(cfwriteStreamWritely((u桥CFWriteStreamRef)输出流,(const uint8_t*)
[ehlo UTF8String],[ehlo LengthofBytes使用编码:NSUTF8StringEncoding])<0)


它可以编译,但当我按“发送”按钮发送带有smtp的电子邮件时,会出现运行时异常。我想知道你是否能帮我解决这个问题。我将感谢任何帮助。提前谢谢,致以最诚挚的问候

你怎么能确定这是一个错误的排版? 只要流正在写入,就尝试保持[ehlo UTF8String]的所有权,这可能会有所帮助

const UInt8 *buffer = (const UInt8 *)[ehlo UTF8String];
if (CFWriteStreamWriteFully(( CFWriteStreamRef)outputStream, buffer, [ehlo lengthOfBytesUsingEncoding:NSUTF8StringEncoding]) < 0) 
有相关的吗?
UInt8和UInt8\t都是未签名字符。

非常感谢您的帮助。然而,我试过了,但没有成功。代码如下所示:if(cfWriteStreamWritely((CFWriteStreamRef)outputStream,const uint8_t*)[ehlo UTF8String],[ehlo LengthofBytes SusingCodeding:NSUTF8StringEncoding])<0{error=[outputStream streamError];EncountereError=YES;}else{[self startShortWatchdog];}CFIndex CFWriteStreamWriteFully(CFWriteStreamRef outputStream,const uint8_t*buffer,CFIndex length){CFIndex bufferOffset=0;CFIndex bytes写入;while(bufferOffsetCFWriteStreamWrite ( CFWriteStreamRef stream, const UInt8 *buffer, CFIndex bufferLength );