[self.view addSubview:myView.view];奇怪的行为

Posted

技术标签:

【中文标题】[self.view addSubview:myView.view];奇怪的行为【英文标题】:[self.view addSubview:myView.view]; strange behavior 【发布时间】:2012-10-22 06:29:49 【问题描述】:

根据更新到 ios6 和 xcode 4.5 的要求,我开始使用 ios 5 和 xcode 4.3 进行项目。在此之后,我使用 .h、.m、.xib 文件创建了新的视图控制器,并尝试通过这些步骤将现有视图添加为子视图

#导入类 使用(强,非原子)创建它的属性 @synthesize 它 myView = [[MYView alloc]init] 终于 [self.view addSubview:myView.view]

所有项目,包括这个在 ios 6 中都可以正常工作,但只有我试图添加为子视图的这个新视图在 ios 5 中出现问题并出现此错误Thread 1: signal SIGTRAP。我尝试逐步调试,但随着 addsubview 执行应用程序崩溃。知道出了什么问题吗?

【问题讨论】:

但是为什么它在 ios 6 中工作,在更新到 ios6 之前以相同方式添加的其他子视图也适用于 ios5 和 ios6 只是为了确认,而不是 [self.view addSubview:myView.view] 你的意思是 [self.view addSubview:myView] 吗? @Sweet Jenny 如果我的怀疑是正确的,这是一个内存管理问题,那么您的应用程序基本上会调用 UB,这意味着任何事情都可能发生,包括它“正常”工作或崩溃。 @Dick 它的 [self.view addSubview:myView.view] @H2CO3 但每次它在 ios6 上都能正常工作,每次在 ios5 上都能正常工作 【参考方案1】:

应该是[self.view addSubview:myView];

而且,您为视图创建了一个属性,您不需要进行分配。 myView = [[MYView alloc]init]

内存分配会使您的应用崩溃。

【讨论】:

【参考方案2】:

实际上是它的自动布局导致了问题

【讨论】:

以上是关于[self.view addSubview:myView.view];奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

self.view = mainView vs self.view.addSubview(mainView)关于角半径

为什么self.view.frame和self.view.bounds在设备旋转时有所不同?

self.view.addSubview 和 view.addSubview 的区别

self.view 有限制吗?

如何使用 Webview frame = self.view.bounds 使导航栏可见?

self.view.insertSubview 背景图像数组不前进