0

アプリをテスト(実行しない)しようとしていますが、次のエラーが発生します:

スレッド1:EXC_BREAKPOINT(コード= EXC_I386_BPT、サブコード= 0x0)

ビューコントローラのinitWithNibNameの行を指しています。

@synthesize messageTextView;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
    {
        /*
        some code
        */
     //This is the line where the exception points:
     messageTextView = [[UITextView alloc]initWithFrame:CGRectMake(0, 306, 320, 110)];
        /*
        some other code
        */


    }
    return self;
}

私のviewcontrollerの.hファイルは次のようになります。

@interface SMMenuViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate ,UITextViewDelegate> 
{
        /*
        some code
        */

}

@property (retain, nonatomic) IBOutlet UITextView *messageTextView;

また、viewDidUnloadのmessageTextViewも「nil」です。

何が問題なのか正確にはわかりません。実行すると正常に動作し、テスト中にのみ失敗するためです。

どんな助けでも大歓迎です!

心から、

ゾリ

4

1 に答える 1

1

まず、参照されているビューを割り当て/初期化する必要はありませんIBOutlet(xib /ストーリーボードによって自動的にインスタンス化されます)。

ここで、実際に行う必要があるのは、ビューのカスタマイズをviewDidLoadメソッド内に移動することです。これは、ビュー階層がロードされていないためですinit(したがって、実際にはすべてのビューがnilその時点までにあります)。階層内のビューの1つに最初にアクセスしようとしたときにロードされます。

したがって、基本的には次のようなことができます。

- (void)viewDidLoad
{
    [self.messageTextView setFrame:CGRectMake(0, 306, 320, 110)];
}

これが理にかなっていることを願っています...

于 2012-09-13T12:40:06.203 に答える