showInView:自定义UIView的方法

问题描述:

我创建了一个自定义UIView,我在整个程序中都使用了这个自定义CustomMessageCustomMessage的外观是动画效果,所以我在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以及崩溃日志中的详细信息,然后再看看。

+0

此方法是一种很好的MVC模式设计吗?该观点正在控制自己,这将违反MVC模式。我错了吗?只是想明白。谢谢 – 2016-05-25 11:25:26