2011-04-07 61 views
0

我想在我的iPhone应用程序上做到这一点。uilabel setcenter崩溃

[titleLabel setCenter:[self.navigationItem.titleView center]]; 

titleLable是UILabel。

我不知道为什么它会崩溃为少数标题文本。对于一组文本,它不会崩溃在其他文本集崩溃的地方。 iOS 4.3.1设备/使用iOS 4.2构建SDK 4.2 SDK

什么可能是错误的?

* 忘了补充最重要的东西。当我使用发行许可证而不是开发人员许可证构建应用程序时,会发生这种情况。将许可对这个东西*

0 libsystem_kernel.dylib   0x35523a1c __pthread_kill + 8 
1 libsystem_c.dylib    0x33f3c3b4 pthread_kill + 52 
2 libsystem_c.dylib    0x33f34bf8 abort + 72 
3 libstdc++.6.dylib    0x33a6ca64 __gnu_cxx::__verbose_terminate_handler() + 376 
4 libobjc.A.dylib     0x348a106c _objc_terminate + 104 
5 libstdc++.6.dylib    0x33a6ae36 __cxxabiv1::__terminate(void (*)()) + 46 
6 libstdc++.6.dylib    0x33a6ae8a std::terminate() + 10 
7 libstdc++.6.dylib    0x33a6af5a __cxa_throw + 78 
8 libobjc.A.dylib     0x3489fc84 objc_exception_throw + 64 
9 CoreFoundation     0x3361c48a +[NSException raise:format:arguments:] + 62 
10 CoreFoundation     0x3361c4c4 +[NSException raise:format:] + 28 
11 QuartzCore      0x34edd616 CALayerSetPosition(CALayer*, CA::Vec2<double> const&, bool) + 134 
12 QuartzCore      0x34edd584 -[CALayer setPosition:] + 32 
13 UIKit       0x35661364 -[UIView(Geometry) setCenter:] + 16 
14 myapp       0x0000e3fa -[Headings viewDidLoad] (Headings.m:188) 

在188码这是摆在问题

+2

请注意,当您构建版本时,构建变量默认情况下不会再设置为零。所以当你声明一个变量时将它设置为零。 – rckoenes 2011-04-07 08:55:07

+1

第13行显示titleLabel不是零,而是指向一个有效的UIView对象(或者,假设它是一个UILabel,一个有效的UIView子类!)。这个vire有一个有效的CALayer,所以我们可以假设它是一个有效的UIView。控制台说什么? (正在引发异常,所以应该在控制台上输出) – deanWombourne 2011-04-07 09:45:38

+0

setCenter:如果给定一个CGNN,其中包含NaN值,它将抛出一个异常。如果您从未初始化的内存中读取,则会发生这种情况。 – 2013-04-03 02:45:57

回答

-1

我把那该死的东西修好了。 。 xcode 3.2.5。 。将编译器设置更改为gcc llvm。 。它开始工作;)

+1

如果更改编译器设置“修复”了问题,则可能是仅由编译器设置公开的错误。你真的应该试图找出潜在的问题,否则它可能会在以后更加困难。 – 2013-04-03 02:43:18

+0

好点!!!! – thndrkiss 2013-04-03 21:22:08

0

首先猜测的开始产生影响,是titleview的零?

否则,XCode应该给你一个错误的名称。也许你可以从那里弄清楚。或者在这里发布错误消息,以便其他人可以查看它。

1

室内用试试这个语法:

titleLabel.center = self.navigationItem.titleView.center; 

如果它不工作,你的UILabel为零。尝试:

UILabel *titleLabel= [[UILabel alloc] initWithFrame: self.navigationItem.titleView.frame];