你好,
我在我的应用程序中遇到了一个非常奇怪的问题。几天前,我的应用程序被批准进入应用商店,但令我惊讶的是,我很快发现其中有一个严重的错误。我去了我的电脑,但当我运行代码(在模拟器和设备上都运行)时,它完美地工作。我已经尝试了一切:重新编译和提交更新,清除所有目标,重新安装SDK等。
以下是问题的更详细描述。我的应用程序中有一个详细的表视图,它从在线源加载一些数据。它在下载时显示一个加载视图,然后在设置数据源后重新加载表视图。表格的单元格包含UITextView,它们的大小会根据文本而改变。当我在计算机上运行应用程序或在设备上进行调试时,文本被下载并完美地显示出来,但是当我从应用商店下载并启动它时,它只会显示文本一次,然后留下空白。我知道数据已经被下载了,因为texviews调整大小以适应文本,只是不显示它。
有人知道可能是什么原因导致这个错误吗?我如何知道我的分发构建是否包含错误,而在调试构建中没有显示出来呢?
您的, BEN。
附:我已比较了调试和分发构建的目标设置。我看到的唯一区别是“代码生成”下的“优化级别”。我尝试更改调试构建的设置,但它并没有揭示问题。
编辑:我通过执行MrMage建议的操作解决了问题。结果证明,这段代码确实是错误的原因。在调试器中运行时,“s”的宽度和高度属性始终为零,我无法改变这一点。我正在研究为什么会发生这种情况。
- (void) setText:(NSString *)string
{
CGSize s = [string sizeWithFont:textView.font constrainedToSize:CGSizeMake(290, FLT_MAX)];
s.height += kStaticSize;
//SizeWithFont is very unreliable so have to do some dirty tweaking
if (s.height > 100 && s.height <= 250)
s.height += 20;
else if (s.height > 250 && s.height <= 500)
s.height += 40;
else if (s.height > 500 && s.height <= 800 )
s.height += 50;
else if (s.height > 800 && s.height <= 1200)
s.height += 60;
else if (s.height > 1200 && s.height <= 1700)
s.height += 100;
else if (s.height > 1700)
s.height += 200;
s.width = 290;
CGRect r = textView.frame;
r.size = s;
[textView setFrame:r];
[self.textView setText: string];
[self.textView setNeedsDisplay];
}