2012-05-04 2 views
0

Я работаю над приложением iphone с push-уведомлениями. Мой вопрос заключается в том, как вызвать функцию из класса B, когда я получаю push-уведомление, не создавая экземпляр этого класса B и не используя статический метод?Как вызвать функцию при получении push-уведомления?

Большое спасибо :)

+0

Я не знаю, ясно ли вы о своем объекте Livecycles. Если ClassB является классом сиглетона, то просто используйте его как accessor. Если вы просто хотите вызвать метод в ClassB, если какой-либо объект класса B существует, используйте механизм NSNotification, настроив его на создание ClassB и уничтожив его на dealloc. Чтобы сократить это короткое: жизненный цикл ClassB является важной частью здесь, чтобы ответить на ваш вопрос;) – monkeydom

ответ

1

Вам нужно будет содержать ссылку на ClassB внутри объекта, который получает толчок уведомление:

// The header file of the class that receives the notification 

@class classB; 

@interface MyNotifiedClass : NSObject 
{ 
    classB *_classB; 
} 

@property (retain, nonatomic, readwrite) classB *classB; 

// The implementation file of the class that receives the notification 

@implementation MyNotifiedClass 

.... 

@synthesize classB = _classB; 


- (void)theMethodThatReceivesTheNotification:(whatever) 
{ 
    [_classB doSomethingNowPlease]; 
} 

Вы, очевидно, должны установить экземпляр classB в этом классе, прежде чем он будет работать:

// Someplace outside both classes (assuming _classB points to an instance of classB 
// and _myNotifiedClass points to an instance of MyNotifiedClass) 

[_myNotifiedClass setClassB:_classB]; 
+0

Привет, спасибо за вашу помощь, но, тем не менее, я не понял. Очевидно, вам придется установить экземпляр класса B в этом классе, прежде чем он будет работать. – Veer

+0

@Veer OK, я обновил свой ответ с помощью дополнительного кода. – trojanfoe

0

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