我创建了一个自定义的UIView
,称为CustomMessage
,我在整个程序中都在使用它。 CustomMessage
的外观具有动画效果,因此我在CustomMessage
类中编写了一个名为showInView:
的方法以显示视图。例如,假设我希望在特定的视图控制器中显示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
的CustomMessage
(在上面的示例中),以避免它在仍在使用时完全释放对象)。除了这个小方面,其他所有东西都可以正常工作,所以任何帮助将不胜感激:)
最佳答案
我需要在showInView:
中查看您的CustomMessage.m
代码。我希望它看起来像以下内容。
- (void)showInView:(UIView *)view
{
// pre-animation configuration
[view addSubview:self];
// do the animation
}
这意味着
CustomMessage
实例由view
保留。另外,如果showInView
的实现完全使用并发,则有可能立即返回以允许释放MyCustomMessage
,然后后台操作试图访问释放对象。我只是在猜测没有看到您的代码。什么是崩溃日志?在什么上下文中将什么消息发送到什么对象?此信息将定位问题。
如果以上方法均不能帮助您解决问题,请发布您的
showInView
代码以及崩溃日志中的详细信息,我将再次进行研究。关于iphone - showInView:自定义UIView的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5684560/