gpt4 book ai didi

iphone - 尝试重置/重新创建时,OpenFlow 使应用程序崩溃

转载 作者:行者123 更新时间:2023-12-03 17:43:28 25 4
gpt4 key购买 nike

我拼命尝试更改 OpenFlow 实例上的图像,但没有成功。
我有点放弃,所以我现在正在尝试删除实例并创建一个新实例。但我无法避免应用程序崩溃。

创建它的代码是:

AFOpenFlowView *of = [[AFOpenFlowView alloc] initWithFrame:CGRectMake(0, 100, 320, 380)];
[of setCenter:CGPointMake(160, 240)];
[of setBackgroundColor:[UIColor blackColor]];
[of setDataSource:self];
[of setViewDelegate:self];

[self setPeopleFlow:of];
[self.view addSubview:peopleFlow];

[of release];

然后,单击一个按钮,我执行以下操作:
[peopleFlow removeFromSuperview];
[peopleFlow release];

稍后我用第一个代码块调用相同的函数来再次创建它,此时应用程序崩溃且没有日志错误。

关于如何清理 OpenFlow 对象以重新填充它而无需删除/重新创建的任何想法?或者如何可靠地创建/重新创建?

最佳答案

当您创建 peopleFlow 实例时,它的保留计数为 1。

然后当你将它添加为 subview 时, super View 会保留它,所以它的保留计数是 2。

然后在将其添加到 super View 后释放它,因此它的保留计数再次为 1。

然后你从 super View 中删除它, super View 释放它,所以它的保留计数为 0 并且对象被释放。

然后你再次尝试释放它,它崩溃了,因为你正在发送 release到一个释放的对象。

长话短说,在这种情况下,您不需要在将其从 super View 中删除后释放它。

此外,如果您释放指针并且不再关心指向的内容,最好将 nil 分配给指针。这是因为在你释放和释放一个对象之后,指针变量仍然指向该对象曾经占用的内存。如果您尝试向悬空指针指向的任何内容发送消息,则将 nil 分配给指针可防止发生任何坏事。

关于iphone - 尝试重置/重新创建时,OpenFlow 使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3264652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com