我不确定QFile的行为,
bool Class::Function (const QString & name)
{
QFile fp (name);
if (fp.open (QIODevice::ReadOnly))
{
// read file
return false;
}
return true;
}
嗯,它不像C中的FILE *指针(你必须关闭并释放),如果我不调用QFile :: close()(它会在销毁时自动执行)会不会有问题?< / p>
答案 0 :(得分:9)
是的,它会自动关闭(Qt documentation),因此无需调用close()。
答案 1 :(得分:0)
我更喜欢在函数返回之前调用fp.close():这可能没有必要但也可能没有害处。
Qt文档可能无法反映实际代码。例如,以下是Qt 5.5.0中的源代码:
@IBAction func Signup(sender: AnyObject) {
let email = self.Email.text
if email == "" {
displayAlert("Error", message: "Please Enter Your Email Address")
}
}
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "WelcomeSignUp" {
let destination = segue.destinationViewController as! SignUpViewController
destination.mail = Email.text!
}
}
因此析构函数中不会自动调用/*!
Destroys the file object, closing it if necessary.
*/
QFile::~QFile()
{
}
。可能需要更新文档。
作为一个额外的优势,将QFile :: open()与QFile :: close()匹配将确保在下次调用函数QFile::close()
时可以再次正确打开该文件。