Пользовательский класс освобождается, как только приложение запускается - PullRequest
1 голос
/ 09 июня 2010

Я добавил объект класса в файл пера.Все подключения выполнены.

Но по какой-то причине объект освобождается сразу после его создания.

Вот код:

control.h:

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

control.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 Приложение [91100: 207] ZOMGWTF?

И после того, как я нажимаю кнопку, на которой сообщения addPoint, естественно, вылетает.

2010-06-09 19: 47: 59.703 Приложение [91100: 207]*** - [control] executeSelector: withObject: withObject:]: сообщение отправлено освобожденному экземпляру 0x3843d80

У кого-нибудь есть идеи?

Ответы [ 2 ]

0 голосов
/ 07 января 2011

Попробуйте удалить из вашего Interface Builder ViewController и использовать владельца файла в качестве «элемента управления».

Прежде всего, измените @interface control : NSObject на @interface control : UIViewControllerизменить что-нибудь?Ах, почему вы используете

-(IBAction) addPoint: sender;

вместо

-(IBAction) addPoint:(id) sender;

?

0 голосов
/ 09 июня 2010

Попробуйте изменить control.h на:

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

А затем добавьте @synthesize в раздел реализации 'control'.

Кроме того, у кого есть ссылка на класс управленияв СИБ?

...