showInView:自定义UIView的方法
我创建了一个自定义UIView
,我在整个程序中都使用了这个自定义CustomMessage
。 CustomMessage
的外观是动画效果,所以我在CustomMessage
类中写了一个方法,名为showInView:
以显示视图。例如,说我希望显示在特定视图控制器CustomMessage
观点 - 我会用下面的代码:showInView:自定义UIView的方法
CustomMessage *myCustomMessage = [[CustomMessage alloc] initWithMessage:@"Hello"];
[myCustomMessage showInView:self.view];
正如你所看到的,这是非常相似,如何创建并提出了UIActionSheet
。
但是,我遇到了内存管理问题。如果我把下面的代码行中的两行以上直接以下:
[myCustomMessage release];
然后(如预期)的程序将与message sent to deallocated instance
错误崩溃。
我不确定我需要在我的CustomMessage类中做什么,这样我可以在调用showInView:
方法后直接释放对象,以便不会发生内存泄漏。显然这是可以做到的,因为这就是UIActionSheet
的工作原理(但我无法理解我如何实现类似的东西 - 我无法弄清楚一些其他对象如何保留对象,大概是self.view
(在上面的示例中)显示CustomMessage
,以避免它在仍处于使用状态时完全释放对象)。
其他的一切完美的作品,除了这个小的方面,所以任何帮助,将不胜感激:)
我需要看到你的代码showInView:
在CustomMessage.m
。我期望它看起来像下面这样。
- (void)showInView:(UIView *)view
{
// pre-animation configuration
[view addSubview:self];
// do the animation
}
这意味着CustomMessage
实例由view
保留。此外,如果您的showInView
的实现完全使用并发,则可能会立即返回,允许发布MyCustomMessage
,然后后台操作尝试访问发布对象。我只是猜测没有看到你的代码。
什么是崩溃日志?什么信息发送到什么对象在什么情况下?此信息将本地化问题。
如果以上都不能帮助您解决问题,请发布代码showInView
以及崩溃日志中的详细信息,然后再看看。
此方法是一种很好的MVC模式设计吗?该观点正在控制自己,这将违反MVC模式。我错了吗?只是想明白。谢谢 – 2016-05-25 11:25:26