[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 的区别