You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UICollectionView sizeForItemAt 崩溃求助:设置CGPoint后仍崩溃

崩溃原因排查与解决

从报错截图能看出,崩溃是因为你给未正确初始化的视图对象设置位置属性导致的,哪怕用测试坐标也会触发,跟具体坐标值无关。

几个必查点

  • 先确认你要调整位置的视图有没有被正确创建:如果是代码写的,得先调用initWithFrame:或init实例化;如果是IB拖的线,检查IBOutlet有没有关联好,别是nil状态。
  • 别搞混对象类型:确保你操作的确实是UIView(或子类)实例,别把数组、字典这类对象当成视图来改位置。
  • 必须在主线程改UI:后台线程直接操作UI控件大概率会崩,所有UI相关操作都要放到主线程里执行。

调试小技巧

  1. 在设置center = CGPoint(10,10)那行加断点,运行后看看目标视图的内存地址是不是nil。
  2. 看崩溃栈的详细信息,精准定位哪行代码出问题,以及接收消息的对象到底是什么。
  3. 代码创建视图的话,顺序别搞反:
// OC 正确流程示例
UIView *testView = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)];
testView.center = CGPointMake(10,10);
[self.view addSubview:testView];
// Swift 正确流程示例
let testView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
testView.center = CGPoint(x: 10, y: 10)
view.addSubview(testView)

不能还没创建视图就先去改它的center。

内容的提问来源于stack exchange,提问作者AdamP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:30:54