NSPropertyListSerialization替代?

时间:2011-02-21 20:29:20

标签: objective-c serialization plist

我是否可以使用任何代码代替此代码段?

NSString *anError = nil;
 id plist;
 plist = [NSPropertyListSerialization propertyListFromData:rawCourseArray mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&anError];
 if (anError != nil){

  [anError release];
 }

上面的代码导致内存泄漏,我无法纠正。我尝试发布错误但没有运气。还有另一种方法可以将数组序列化为plist格式而不会泄漏吗?

此致 BX

所以我编辑了代码,它现在看起来像这样但仍然是泄密。它一定是东西。我在......之后加入了循环。

NSError *error = nil;
    id plist;
    plist = [NSPropertyListSerialization propertyListWithData:rawCourseArray options:/*unused*/0
                                                       format:NULL error:&error];
    //NSArray *entries = (NSArray *)d;
    NSArray *entries = (NSArray *)plist;

    //for (eachCourse in rawCourseArray)
    for (NSDictionary *entry in entries) 
    {
             //LOOP
        }

2 个答案:

答案 0 :(得分:1)

您使用的方法已过时,并且即将根据Apple文档弃用,您应该使用propertyListWithData:options:format:error:代替

Linkage

答案 1 :(得分:0)

该代码中没有内存泄漏。但是,存在潜在的崩溃。你不应该-release错误对象,因为你不拥有它。事实证明NSPropertyListSerialization有一个糟糕的API。请考虑使用+[NSPropertyListSerialization propertyListWithData:options:format:error:]变体。

你确定这里有内存泄漏吗?重现泄漏所需的最少量代码是什么?