2011-01-22 2 views
0

Я хочу передать NSMutableDictionary из одного класса через таймер в другой класс, который вызывается из таймера. Я получаю сообщение об ошибке @selector([generateStickFig:enemies]) Я пробовал принимать [], но он все еще ошибается.Objective C: Передача переменных между классами

-(void)awakeFromNib { 

//start timer that fires every second 
NSMutableDictionary *enemies = [[NSMutableDictionary alloc] init]; 
[NSTimer scheduledTimerWithTimeInterval:(0.001) target:self selector:@selector([generateStickFig:enemies]) userInfo:nil repeats:YES]; 

} 

-(void) generateStickFig:(NSMutableDictionary *)enemies { 

int x = random() % 1000; 

if (x == 1) { 
    stickFig = [[UIButton alloc] initWithFrame:CGRectMake(0, 650, 50, 50)]; 
    [stickFig setBackgroundColor:[UIColor blackColor]]; 
    [stickFig addTarget:self action:@selector(tapFig:) forControlEvents:UIControlEventTouchUpInside]; 
    [enemies setObject:object forKey:[NSString stringWithFormat:@"object%i",i]]; 
    [self.view addSubview:stickFig]; 
} 
} 

Любые предложения?

ответ

1

Попробуйте

[NSTimer scheduledTimerWithTimeInterval:(0.001) target:self selector:@selector(generateStickFig:) userInfo:enemies repeats:YES]; 

создать таймер. Затем измените метод обратного вызова на

+0

Я думаю, что это работает, он компилируется сейчас. Один вопрос, однако, как он знает, какую переменную отправлять, если вы не включаете ее в селектор. – Chris

+0

Если у вас есть несколько переменных для отправки, вы должны упаковать их в словарь и передать словарь в аргумент userInfo :. –

+0

Вы включаете словарь врагов в качестве параметра userInfo. Я забыл, что вам нужно немного изменить метод обратного вызова. Я редактировал необходимые изменения в свой ответ. –

Смежные вопросы