1
也許這會爲某人節省一小時或幾個調試時間。實現在斯威夫特的XML解析器,類似於Objective-C的,似乎很簡單:Swift內存管理漏洞:邊界情況,功能或錯誤?
private class Customparser : NSObject,NSXMLParser
{
// ... implement the parser protocol methods
}
...
let parser=NSXMLParser(data:data)
parser.delegate=CustomParser()
let success=parser.parse()
此代碼失敗,真的無益運行時錯誤(壞的訪問)。
我會打開雷達(bugreport.apple.com)關於崩潰。編譯器應該能夠檢測到'parser.delegate = CustomParser()'是無效的(因爲'CustomParser'符合所需協議的事實是私有的,所以'NSXMLParser'不應該可見)。將其固定在編譯器中可能會很困難,但這是一個合理的要求。至於內存管理,這是你的錯誤(你永遠不會擁有強大的參考),但是期望靜態分析器能夠檢測到這種錯誤是合理的。雷達可能是合理的。 – 2014-09-29 12:37:15