2010-10-06 12 views
1

У меня есть кнопка в моем приложении под названием myButton, что я, что делать, действительно просто. Я хочу иметь целое число, которое добавляет его к себе каждый раз при нажатии кнопки. Вот то, что код выглядит как прямо сейчас:Целые числа в приложении IPhone

- (IBAction)myButton { 
NSLog(@"Button was pushed WOHHOP"); 
} 

Это в моем файле .m, так что мне нужно, чтобы объявить целое в моей .h файле? Я просто хочу записать значение этого параметра внутри этого действия кнопки, чтобы, когда я его нажимаю, я вижу, что число увеличивается на единицу каждый раз.

Любые советы помогут, Спасибо!

ответ

5

я хотел бы использовать переменную экземпляра по умолчанию:

@interface MONClass : MONSuperClass 
{ 
    NSUInteger clicks; 
} 

@end 

@implementation MONClass 

- (id)init { 
    self = [super init]; 
    if (0 != self) { 
     clicks = 0; 
    } 
    [return self]; 
} 

- (IBAction)myButton:(id)sender 
{ 
#pragma unused(sender) 
    ++clicks; 
    NSLog(@"Button was pushed %i times WOHHOP", clicks); 
} 
+0

Что такое '# прагма'? – Emil

+0

'- (IBAction) метод: (id) отправитель' это подпись метода, которую должен принять IBAction'. в этом случае «отправитель» не используется. '#pragma unused (sender)' отключает предупреждение, выданное компилятором (в зависимости от предупреждений, которые вы включили). – justin

1

Вы также можете объявить статическую переменную:

- (IBAction)myButton { 
    static NSUInteger counter = 0; 
    counter++; 
    NSLog(@"Button was pushed WOHHOP. Counter: %u", counter); 
} 

Но обратите внимание, что в данном случае переменная counter будет распределяться между всеми экземплярами этого класса. Возможно, это не проблема в этом случае, но это может сбить с толку. Реальная переменная экземпляра, как правило, является лучшим способом.

+0

Спасибо, это именно то, что мне нужно, просто из любопытства мне нужно «освободить» эту переменную, когда приложение подходит к концу? –

+0

Нет. Но обратите внимание на текст, который я только что добавил к моему ответу. –

1

Третий вариант является просто использовать глобальную переменную. Объявить:

int counter = 0; 

между импортом и реализацией в любом файле .m (но только один); объявить:

extern int counter; 

в заголовке любого файла, в котором вы хотите использовать этот счетчик. И использовать:

counter++; 

из любой точки (любая функция, метод, объект или класс), и получить доступ к счетчику по всей заявке.

Обратите внимание, что использование глобальных переменных не очень хорошо масштабируется для крупных приложений или компонентов многократного использования, поэтому их использование обычно обескураживается. Вместо этого используйте переменные экземпляра или, возможно, статические локаторы класса или метода, если это вообще возможно.