Я изучаю Objective-C прямо сейчас, и для практики я написал простой генератор случайных лабиринтов для OS X, который отлично работает. Затем я попытался добавить больше взаимодействия с кнопками, но у меня возникли проблемы с переменными экземпляра, поскольку они не сохраняют значение, которое я им назначаю. Я сталкивался с несколькими вопросами об одной и той же проблеме, но их решение не решило мою проблему. Я также проверил, сохраняется ли та же проблема в упрощенной версии программы, что и происходит.
Полагаю, я делаю что-то не так, но не знаю что. Вот что я сделал:
- Создан новый проект
- Добавлен подкласс NSView под названием «TestClass»
- Добавлено представление с классом TestClass в окне в MainMenu.xib
- Добавлен объект для TestClass в MainMenu.xib
- Добавил кнопку в вид и установил ее тег на 1
- Добавил следующий код в TestClass.h и TestClass.m и подключил к нему кнопку:
TestClass.h:
#import
@interface TestClass : NSView
{
NSNumber *number;
NSButton *test;
}
@property (nonatomic, retain) NSNumber *number;
@property (assign) IBOutlet NSButton *test;
- (IBAction)testing:(id)sender;
@end
TestClass.m:
#import "TestClass.h"
@implementation TestClass
@synthesize number;
@synthesize test;
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code here.
}
return self;
}
- (IBAction)testing:(id)sender
{
self.number = [[NSNumber numberWithLong:[sender tag]] retain];
}
- (void) drawRect:(NSRect)dirtyRect
{
NSLog(@"%@", number);
}
@end
Всякий раз, когда я нажимаю кнопку, NSLog просто возвращает ноль несколько раз.
Обычно я все выясняю сам (в конце концов ...), но на этот раз это действительно сводит меня с ума, так есть ли кто-нибудь, кто может мне помочь?