Я работал над некоторыми книгами по разработке для Цель / iOS и наткнулся на камень преткновения. У меня такое ощущение, что мне здесь чего-то не хватает, так что я уверен, что вы, ребята, можете помочь, потому что вы все такие чертовски умные :-).
У меня очень простое приложение, состоящее из 1 кнопки и 1 метки. Нажатие на кнопку помещает сообщение в метку. Я создал класс, который включает метод для создания указанного сообщения. Вот проблема:
#import "classTestViewController.h"
@implementation classTestViewController
@synthesize myLabel;
- (void)viewDidLoad
{
}
-(IBAction) pressGo:(id)sender{
MyClass * classTester = [[MyClass alloc] init];
classTester.count = 15;
NSString *newText = [classTester makeString ];
myLabel.text = newText;
}
- (void)dealloc
{
[classTester release];
[myLabel release];
[super dealloc];
}
Выход этого приложения, на моем ярлыке, "Yay 15". Таким образом, вы можете увидеть проблему, единственный способ заставить это работать - создать экземпляр класса прямо в методе «pressGo». Это нежелательно, потому что другой метод не может получить доступ или изменить количество переменных класса. Также я получаю предупреждение, что локальное объявление classTester скрывает переменную экземпляра. Если я переместу создание экземпляра класса в метод viewDidLoad, что кажется правильным, другие методы больше не смогут получить к нему доступ.
# import "classTestViewController.h"
@implementation classTestViewController
@synthesize myLabel;
- (void)viewDidLoad
{
MyClass * classTester = [[MyClass alloc] init];
}
-(IBAction) pressGo:(id)sender{
classTester.count = 15;
NSString *newText = [classTester makeString ];
myLabel.text = newText;
}
- (void)dealloc
{
[classTester release];
[myLabel release];
[super dealloc];
}
Результат этого - нада. Если я пытаюсь получить доступ только к одной переменной, например classTester.count, даже после ее установки, я получаю значение 0. Я также получаю предупреждение о переопределении здесь.
Итак, мой вопрос: как я могу получить доступ к этому экземпляру класса во всем приложении, а не только в одном методе? Я использую приложение на основе представления.