NSPropertyListSerialization 替代方案?

发布于 2024-10-18 08:43:36 字数 891 浏览 5 评论 0原文

我可以使用任何代码来代替此代码片段吗?

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
        }

Is there any code that I can use in place of this code snippet?

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

  [anError release];
 }

The code above causes a memory leak which I can't correct. I try releasing the error but no luck. Is there another way to serialize an array into plist format without the leak?

Regards,
BX

So I edited the code and it now looks like this but still a leak. It must be something esle. I included the loop after...

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
        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小霸王臭丫头 2024-10-25 08:43:36

您使用的方法已过时,并且根据苹果文档即将被弃用,您应该使用 propertyListWithData:options:format:error: 而不是

联动

The method you are using is obsolete and is about to be deprecated according to the apple docs, you should use propertyListWithData:options:format:error: instead

Linkage

独享拥抱 2024-10-25 08:43:36

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

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

There is no memory leak in that code. However, there is a potential crash. You should not -release the error object, because you do not own it. It turns out that NSPropertyListSerialization has a terrible API. Consider using the +[NSPropertyListSerialization propertyListWithData:options:format:error:] variant instead.

Are you sure there's a memory leak here? What's the minimal amount of code you need to reproduce the leak?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文