доступ к методу из кнопки в классе? - PullRequest
0 голосов
/ 29 мая 2010
#import "GameObject.h"
#import "Definitions.h"

@implementation GameObject

@synthesize owner; 
@synthesize state; 
@synthesize mirrored;

@synthesize button;

@synthesize switcher;


- (id) init { 
 if ( self = [super init] ) { 
  [self setOwner: EmptyField];

  button = [UIButton buttonWithType:UIButtonTypeCustom];

  [self setSwitcher: FALSE];
  } 
 return self; 
} 
- (UIButton*) display{
 button.frame = CGRectMake(0, 0, GO_Width, GO_Height);
 [button setBackgroundImage:[UIImage imageNamed:BlueStone] forState:UIControlStateNormal];
 [button addTarget:self action:@selector(buttonPressed:) 
    forControlEvents:UIControlEventTouchUpInside];

 return button;
}


-(void)buttonPressed:(id) sender {
 //...
 }
}

- (void) dealloc { 
 [super dealloc]; 
} 

@end

Привет!

Я хотел бы знать, возможно ли вышеизложенное каким-либо образом внутри класса (в моем случае это называется GameObject) или если у меня должна быть кнопка для вызова метода в viewcontroller ... приведенные выше результаты приводят к сбою приложения. .

Я бы вызвал display внутри цикла на viewcontroller, а id хотел бы изменить некоторые переменные экземпляра GameObjects внутри buttonPressed. Также я хотел бы изменить некоторые другие вещи, вызывая некоторые другие методы из buttonPressed, но я думаю, что это будет меньшей из моих проблем;)

о, кстати: я делаю все это программно! так что никакой интерфейсный конструктор на этом.

также хотелось бы узнать, как я могу передать некоторые переменные методу buttonPressed ... не могу найти его где-либо :( помощь по этому вопросу будет высоко ценится;)

спасибо Фло

1 Ответ

2 голосов
/ 29 мая 2010

Ваше приложение падает из-за проблем с управлением памятью.

  button = [UIButton buttonWithType:UIButtonTypeCustom];  // wrong

Метод +buttonWithType: не является методом +alloc / -copy / +new, поэтому возвращаемое значение будет -autorelease d. Но GameObject будет владельцем этой кнопки. Поэтому вы должны -retain это.

  button = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; // correct

(и, конечно, -release это в -dealloc.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...