1
#import <QuartzCore/QuartzCore.h>
- (void)viewDidLoad
{
    [self.forwardView setFrame:CGRectMake(12.0, 40.0+height, 296.0, rootViewHeight-15.0)];

    self.forwardView.layer.borderColor = [UIColor colorWithRed:153.0/250.0 green:153.0/250.0 blue:153.0/250.0 alpha:100].CGColor;
    self.forwardView.layer.borderWidth = 1;
    CGRect frame = CGRectMake(12.0f, 40.0f, 288.0f , height);
    [self.tvContent setFrame:frame];
}


[self.tvContent setFrame:frame]; //crash?

例外メッセージ:

-[__NSCFString setFrame:]: unrecognized selector sent to instance 0x7894c00
2013-05-21 10:44:54.677 Sohappy[22295:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString setFrame:]: unrecognized selector sent to instance 0x7894c00'
*** First throw call stack:
(0x1eb5012 0x19aae7e 0x1f404bd 0x1ea4bbc 0x1ea494e 0xfb407 0xfc20b 0x9d01c7 0x9d0232 0x9d04da 0x9e78e5 0x9e79cb 0x9e7c76 0x9e7d71 0x9e889b 0x9e8e93 0x8ef13f7 0x9e8a88 0x93b9 0x99df83 0x99e4ed 0x13a85b3 0x1e74376 0x1e73e06 0x1e5ba82 0x1e5af44 0x1e5ae1b 0x24e27e3 0x24e2668 0x8eeffc 0x2acd 0x29f5 0x1)
libc++abi.dylib: terminate called throwing an exception

.xib の UILabel、UseAutoLayout、ios SDK 6.1

4

2 に答える 2

6

NSString存在しない何かのフレームを設定しようとしています。self.tvContentあなたが疑っているようにUILabelではなく、NSStringです。


これは、例外の読み方を学ぶ良い機会です。ここであなたのためにそれを分解します:

-[__NSCFString setFrame:]: unrecognized selector sent to instance 0x7894c00
2013-05-21 10:44:54.677 Sohappy[22295:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString setFrame:]: unrecognized selector sent to instance 0x7894c00'
*** First throw call stack:
(0x1eb5012 0x19aae7e 0x1f404bd 0x1ea4bbc 0x1ea494e 0xfb407 0xfc20b 0x9d01c7 0x9d0232 0x9d04da 0x9e78e5 0x9e79cb 0x9e7c76 0x9e7d71 0x9e889b 0x9e8e93 0x8ef13f7 0x9e8a88 0x93b9 0x99df83 0x99e4ed 0x13a85b3 0x1e74376 0x1e73e06 0x1e5ba82 0x1e5af44 0x1e5ae1b 0x24e27e3 0x24e2668 0x8eeffc 0x2acd 0x29f5 0x1)
libc++abi.dylib: terminate called throwing an exception

ここにあなたが興味を持っているものがあります:

-[__NSCFString setFrame:]: unrecognized selector sent to instance 0x7894c00

システムは、オブジェクトのクラスと、それを送信しようとしたメッセージを提供しています。この場合は、呼び出そうとした NSString ですsetFrame:

この情報とどの行がクラッシュしているかを知っていることを組み合わせると、簡単な結論self.tvContentが得NSStringられますUILabel

于 2013-05-21T03:23:37.980 に答える
1
-[__NSCFString setFrame:]

あなたのアプリは、tvContent がビューではなく文字列であると考えています。アウトレットが UI に正しく接続されていることを確認してください。さらに、tvContent のプロパティがある場合は、所有する参照である必要があります (たとえば、強い (ARC の下) または保持 (非 ARC))。

于 2013-05-21T03:20:53.173 に答える