iOS5 ARC错误:SKPSMTPMessage

dba*_*ett 5 ios5 automatic-ref-counting

我试图将这段代码合并到一个新的(iOS 5)项目中......问题是,我正在使用ARC,它真的不喜欢编写的代码.

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

错误#1:

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

.H

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

    id <SKPSMTPMessageDelegate> delegate;
}

@property(nonatomic, assign) id <SKPSMTPMessageDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)

.M

@synthesize login, pass, relayHost, relayPorts, subject, fromEmail, toEmail, parts, requiresAuth, inputString, wantsSecure, \
delegate, connectTimer, connectTimeout, watchdogTimer, validateSSLChain;
Run Code Online (Sandbox Code Playgroud)

错误#2:

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

.H

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

    id <SKPSMTPMessageDelegate> delegate;
}
Run Code Online (Sandbox Code Playgroud)

.M

[NSStream getStreamsToHostNamed:relayHost port:relayPort inputStream:&inputStream outputStream:&outputStream];
Run Code Online (Sandbox Code Playgroud)

任何指导将不胜感激.

谢谢.

Igo*_*nko 6

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

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

您只需要-fno-objc-arc为导入的类添加编译器标志

在此输入图像描述