我试图将这个位码合并到一个新的(IOS 5)项目中.问题是,我正在使用ARC,它真的不喜欢编写的代码。
我已经能够解决大部分的错误,但我被困在三个错误,我似乎无法弄清楚。
错误#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和#3:
将非本地对象的地址传递给_autoreleasing参数以进行回写。
.h
@interface SKPSMTPMessage : NSObject {
NSOutputStream *outputStream;
NSInputStream *inputStream;
id <SKPSMTPMessageDelegate> delegate;
}.m
[NSStream getStreamsToHostNamed:relayHost port:relayPort inputStream:&inputStream outputStream:&outputStream];如有任何指导,将不胜感激。
谢谢。
发布于 2012-08-22 12:14:34
我已经为这个问题找到了正确的解决办法。
答案是:不必费心手动转换代码.
只需将编译器标志-fno-objc-arc添加到导入的类中即可。

发布于 2012-03-04 00:44:38
错误#1
Replase
@property(nonatomic, assign) id <SKPSMTPMessageDelegate> delegate;至
@property(nonatomic, _unsafe_unretained) id <SKPSMTPMessageDelegate> delegate;您不能在ARC中使用assign
错误#2,3
尝试不使用alloc和init、outputStream和inputStream变量。
NSInputStream *inputStream;
NSOutputStream *outputStream;
[NSStream getStreamsToHostNamed:relayHost port:relayPort inputStream:&inputStream outputStream:&outputStream];https://stackoverflow.com/questions/9551048
复制相似问题