Проблема с моим приложением делегата - PullRequest
0 голосов
/ 28 марта 2011

Я пытаюсь создать приложение, содержащее класс, созданный в делегате приложения.Я инициализирую его с помощью:

    Mobile *tmp = [[Mobile alloc] init];
    mobile = tmp;
    [tmp release];

и затем пытаюсь использовать его в других классах в моем приложении с этим:

    projectAppDelegate *delegate = (projectAppDelegate *)[[UIApplication sharedApplication] delegate];
    mobile = delegate.mobile;

, но когда я делаю что-то вроде:

[mobile enter:x :y];

происходит сбой ...

Есть ли что-то, что я сделал неправильно, или есть какое-то решение для создания класса, который могут использовать все другие классы в приложении?

Спасибовы.

Ответы [ 2 ]

0 голосов
/ 28 марта 2011

Если вы хотите использовать экземпляры вашего объекта, вы должны сохранить их как свойства делегата приложения.

//appdelegate.h
//
//...
//
@interface AppDelegate : NSObject <UIApplicationDelegate> {
  Mobile *tmp;
}
//...

//appdelegate.m
//
//...
//
- (BOOL)application:(UIApplication *)application 
  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  mobile = [[Mobile alloc]init];      
}
//...
-  (void)dealloc {
  [mobile release];
  [super dealloc];
//...
}

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

//... Somewhere
AppDelegate* ref = (AppDelegate*) [[UIApplication sharedApplication] delegate];
NSLog(@"%@", [ref mobile]);
//...
0 голосов
/ 28 марта 2011

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

mobile = [[Mobile alloc] init];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...