2015-10-09 4 views
-1

Я разрабатываю приложение IOS. Я создал базовый класс для создания экземпляра serverclass с делегатом. Я установил этот делегат в методе init. Я ожидал, что делегат будет установлен для всех подклассов, но по какой-то причине этого не произошло. Код выглядит следующим образом. BaseClass.hДелегат базового класса, не вызываемый для подкласса

@interface BBBaseCommand : NSObject<SectionCommand,ServerDelegate> 
{ 
    Server *serverObj; 
} 
- (instancetype)init; 
- (void)serverDidReceiveResponse:(NSDictionary *)response; 
- (void)serverDidReceiveError:(NSError *)error; 
@end 

BaseClass.m

-(instancetype)init 
{ 
    serverObj = [[Server alloc]init]; 
    [serverObj setDelegate:self]; 
    return self; 
} 

SubClass.h

@interface BBBoatSaleCommand : BBBaseCommand 
-(void)excute; 
-(instancetype)init; 
@end 

SubClass.m

-(instancetype)init 
{ 
    self = [super init]; 
    return self; 
} 
-(void)excute 
{ 
    NSMutableDictionary *params = [[NSMutableDictionary alloc] init]; 

    [serverObj BoatSaleParams:params]; 
} 
- (void)serverDidReceiveResponse:(NSDictionary *)response 
{ 
    NSLog(@"Response: %@", response); 
} 
- (void)serverDidReceiveError:(NSError *)error 
{ 
    NSLog(@"Error: %@", error); 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Message" message:@"An error occured while retrieving the data, please try again later." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
    [alertView show]; 
} 
@end 

спасибо заранее.

ответ

1
-(instancetype)init 
{ 
    serverObj = [[Server alloc]init]; 
    [serverObj setDelegate:self]; 
    return self; 
} 

Вы никогда не создадите себе объект.

Это должно быть что-то вроде

-(instancetype)init 
{ 
    if(self = [super init]){ 
     serverObj = [[Server alloc]init]; 
     [serverObj setDelegate:self]; 
    } 
    return self; 
} 
Смежные вопросы