1

我想知道如何正确地将新对象添加到 CoreData 数据存储区。以下代码有效,但我有点惊讶我必须使用 new NSString 和 new NSNumber 来设置值。除此之外,我担心我的代码会导致内存泄漏。

let ed = NSEntityDescription.InsertNewObjectForEntityForName("Document", context)

ed.SetValueForKey(new NSString("title"), new NSString("title"))
ed.SetValueForKey(new NSString("file"), new NSString("file"))
ed.SetValueForKey(new NSString("base_name"), new NSString("base_name"))
ed.SetValueForKey(new NSNumber(123), new NSString("question_count"))
ed.SetValueForKey(new NSString("revision"), new NSString("revision"))
ed.SetValueForKey(new NSString("valid"), new NSString("valid"))

let error = context.Save()
4

1 回答 1

0

那不会泄漏。当不存在对它们的引用时(例如,在方法调用之后),垃圾收集器 (GC) 将回收创建的实例的内存。

OTOH,您可以使用更少的代码(至少使用 C#)来做到这一点,例如

ed.SetValueForKey ((NSString) "title", (NSString) "title")

ed.SetValueForKey ((NSNumber) 123, (NSString) "question_count")

请注意,它并没有真正改变正在发生的事情(但我更喜欢这种语法)。

于 2013-09-28T14:59:31.203 回答