我创建了一个名为UIView
的自定义CustomMessage
,我在整个程序中使用了该CustomMessage
。 CustomMessage
的外观已设置动画,因此我在名为showInView:
的{{1}}类中编写了一个方法来显示视图。例如,假设我希望在特定视图控制器中显示CustomMessage
视图 - 我将使用以下代码:
CustomMessage *myCustomMessage = [[CustomMessage alloc] initWithMessage:@"Hello"];
[myCustomMessage showInView:self.view];
正如您所看到的,这与创建和呈现UIActionSheet
的方式非常相似。
但是,我遇到内存管理问题。如果我将以下代码行直接放在上面的两行之后:
[myCustomMessage release];
然后(正如预期的那样)程序将因message sent to deallocated instance
错误而崩溃。
我不确定我需要在CustomMessage类中做什么,这样我可以在调用showInView:
方法后直接释放对象,这样我就不会出现内存泄漏。显然这可以做到,因为这是UIActionSheet
的工作方式(但我无法理解我如何实现类似的东西 - 我无法弄清楚CustomMessage
对象是如何实现的由其他一些对象保留,可能是显示self.view
的{{1}}(在上面的例子中),以避免在它仍在使用时完全释放对象。
除了这个小方面外,其他一切都很完美,所以任何帮助都会非常感激:)
答案 0 :(得分:2)
我需要在showInView:
中查看CustomMessage.m
的代码。我希望它看起来像下面这样。
- (void)showInView:(UIView *)view
{
// pre-animation configuration
[view addSubview:self];
// do the animation
}
这意味着CustomMessage
实例由view
保留。此外,如果showInView
的实现完全使用并发,则可能会立即返回,允许释放MyCustomMessage
,然后后台操作尝试访问发布对象。我只是猜测没看到你的代码。
什么是崩溃日志?什么消息发送到什么上下文中的对象?此信息将本地化问题。
如果以上都不能帮助您解决问题,请发布showInView
的代码以及崩溃日志中的详细信息,我会再看看。