iOS5 ARC错误:SKPSMTPMessage

时间:2012-03-04 00:07:27

标签: ios5 automatic-ref-counting

我正在尝试将此bit of code合并到一个新的(iOS 5)项目中......问题是,我正在使用ARC,它真的不喜欢所写的代码。

我已经能够解决大多数错误,但我遇到了3个我似乎无法弄清楚的错误。

错误#1:

  

针对unsafe_unretained属性'委托'的现有ivar'委托'   必须是_unsafe_unretained

·H

@interface SKPSMTPMessage : NSObject {  
    NSOutputStream *outputStream;
    NSInputStream *inputStream;

    id <SKPSMTPMessageDelegate> delegate;
}

@property(nonatomic, assign) id <SKPSMTPMessageDelegate> delegate;

的.m

@synthesize login, pass, relayHost, relayPorts, subject, fromEmail, toEmail, parts, requiresAuth, inputString, wantsSecure, \
delegate, connectTimer, connectTimeout, watchdogTimer, validateSSLChain;

错误#2&amp; #3:

  

将非本地对象的地址传递给_autoreleasing参数   回写

·H

@interface SKPSMTPMessage : NSObject {  
    NSOutputStream *outputStream;
    NSInputStream *inputStream;

    id <SKPSMTPMessageDelegate> delegate;
}

的.m

[NSStream getStreamsToHostNamed:relayHost port:relayPort inputStream:&inputStream outputStream:&outputStream];

非常感谢任何指导。

感谢。

2 个答案:

答案 0 :(得分:6)

我找到了正确解决这个问题的方法。

答案是:不要打扰自己手动转换代码。

您只需要向导入的类

添加编译器标志-fno-objc-arc

enter image description here

答案 1 :(得分:0)

错误#1
重新播放

@property(nonatomic, assign) id <SKPSMTPMessageDelegate> delegate;

@property(nonatomic, _unsafe_unretained) id <SKPSMTPMessageDelegate> delegate;

您不能将assign与ARC

一起使用

错误#2,3
尽量不要allocinit outputStreaminputStream变量。

NSInputStream *inputStream;
NSOutputStream *outputStream;
[NSStream getStreamsToHostNamed:relayHost port:relayPort inputStream:&inputStream outputStream:&outputStream];