我正在使用ARC(不,这不是NDA).我在我的界面中宣布我的ivar
id itemDelegate;
Run Code Online (Sandbox Code Playgroud)
然后我宣布财产:
@property (nonatomic, weak) id<mySecretDelegateYouAreNotSupposedToSeeOnSO> itemDelegate; (由于ARC而弱而不是分配)
在我的实现文件中,我只是合成它: @synthesize itemDelegate;
但是,我收到错误:
"Existing ivar 'ItemDelegate' for _weak property 'itemDelegate' must be _weak".
Run Code Online (Sandbox Code Playgroud)
谁知道什么是错的?谢谢你的帮助.
ARC - 自动参考计数
我试图将这段代码合并到一个新的(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)
任何指导将不胜感激.
谢谢.