我正在尝试将此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];
非常感谢任何指导。
感谢。
答案 0 :(得分:6)
我找到了正确解决这个问题的方法。
答案是:不要打扰自己手动转换代码。
您只需要向导入的类
添加编译器标志-fno-objc-arc
答案 1 :(得分:0)
错误#1
重新播放
@property(nonatomic, assign) id <SKPSMTPMessageDelegate> delegate;
到
@property(nonatomic, _unsafe_unretained) id <SKPSMTPMessageDelegate> delegate;
您不能将assign
与ARC
错误#2,3
尽量不要alloc
和init
outputStream
和inputStream
变量。
NSInputStream *inputStream;
NSOutputStream *outputStream;
[NSStream getStreamsToHostNamed:relayHost port:relayPort inputStream:&inputStream outputStream:&outputStream];