我为协议编写了以下代码。我将引用传递给委托变量并使用它来调用接口/协议函数。但是,如果我将?
用于声明Protocol对象,则不会生成错误。如果我不这样做,那就会给我一个错误
属性self.delegate未在super.init()初始化。
为什么?
protocol DownloadDataInterface
{
func downloadCompleted(data : NSDictionary);
}
class DownloadData: NSObject, NSURLConnectionDelegate, NSURLConnectionDataDelegate {
var data : NSMutableData!;
var delegate : DownloadDataInterface;
init(keywords: String!)
{
super.init();
答案 0 :(得分:0)
因为在init
结束时,每个属性都必须已初始化。在声明网站或init
的代码中。
可选或隐式展开可选的属性是唯一的例外(因为,毕竟,这是可选的意思)。