2010-08-31 2 views

ответ

1

В зависимости от типа функции, которую вы хотите вызвать, вы можете создать статическую функцию. Для этого просто объявите функцию, как + (void)printA:(int)a andB:(int)b;

и позвоните по телефону [Class2 printA:a andB:b] без экземпляра. Или если вы хотите вызвать нестационарный метод, вы можете использовать протокол делегирования.

Вы можете создать протокол, как

@protocol PrintJobReceiver 
- (void)printVariableA:(int)a andB:(int)b; 
@end 

у него сообразуйтесь по class2

@interface Class2: NSObject <PrintJobReceiver> { } 
@end 
@implementation Class2 
- (void)printVariableA:(int)a andB:(int)b 
{ 
    NSLog(@"a: %i b:%i",a,b); 
} 
@end 

и установить делегат на Class1 вы затем использовать для печати (вы хотите, чтобы передать экземпляр от класса 2)

@interface Class1:NSObject 
{ 
    id<PrintJobReceiver> delegate; 
} 
@property (nonatomic,readwrite, retain) id<PrintJobReceiver> delegate; 
@end 
@implementation Class1 
@synthesize delegate; 
@end 

, то вы можете позвонить по телефону [delegate printVariableA:a andB:b]; в классе 1. Обычно я использую это вместо передачи ссылки на весь класс, чтобы показывать только функции, которые должны использоваться классом (и вы не получаете соблазн использовать функции, которые не должны быть)

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