1

クラス オブジェクトを nib ファイルに追加しました。すべての接続が確立されます。

しかし、何らかの理由で、オブジェクトは作成されるとすぐに割り当てが解除されます。

コードは次のとおりです。

コントロール.h:

#import <Foundation/Foundation.h>
@interface control : NSObject 
{
    IBOutlet UILabel *PlayerScore;
}
-(IBAction) addPoint: sender;
-(void) dealloc;
@end

コントロール.m:

#import "control.h"
@implementation control
-(IBAction)addPoint: sender {
    NSLog(@"Ohhai. Didn't crash."); //Doesn't even make it to this stage.
    int i = [PlayerScore.text intValue];
    PlayerScore.text=[NSString stringWithFormat: @"%d",++i];
}
-(void) dealloc {
    NSLog(@"ZOMGWTF?");
    [super dealloc];
}
@end

コンソールログは次のとおりです。

[セッションは 2010-06-09 19:47:57 +1000 で開始されました。]
2010-06-09 19:47:58.771 App[91100:207] ZOMGWTF?

もちろん、addPoint をメッセージするボタンをクリックすると、クラッシュします。

2010-06-09 19:47:59.703 App[91100:207] *** -[control] performSelector:withObject:withObject:]: メッセージが割り当て解除されたインスタンス 0x3843d80 に送信されました

誰にもアイデアはありますか?

4

2 に答える 2

0

control.hを次のように変更してみてください。

#import <Foundation/Foundation.h>
@interface control : NSObject 
{
    UILabel *PlayerScore;
}
@property (nonatomic, retain) IBOutlet UILabel *PlayerScore;
-(IBAction) addPoint: sender;
-(void) dealloc;
@end

次に、「control」の実装セクションに@synthesizeを追加します。

また、NIBのコントロールクラスを参照しているのは誰ですか?

于 2010-06-09T10:25:09.607 に答える
0

Interface Builder から ViewController を削除し、ファイル所有者を「コントロール」として使用してみてください。

まずこれ、 何か @interface control : NSObjectを変えるために変える? ああ、なぜ使うのか@interface control : UIViewController




-(IBAction) addPoint: sender;

代わりは

-(IBAction) addPoint:(id) sender;

?

于 2011-01-07T18:29:56.223 に答える