Objective-C:在Child Class中使用继承和调用方法

时间:2014-01-21 17:31:23

标签: ios objective-c design-patterns

我正在设置继承。

我有一个父类,它有一个调用块的方法。一旦块返回,我需要它来调用子类中的重写方法。

当我设置断点时,失败时,块正在调用父类中的方法。我究竟做错了什么?谢谢。

父类

·H

@interface BaseClass : UITableViewController
-(void)userModelUpdated
-(void)updateModel
@end

的.m

@implementation BaseClass

-(void)userModelUpdated
{} //this is left blank intentionally as a hook


-(void)updateModel
{
   //Here is s Block 
    [EndPoint updateUserModel:self.userModel successBlock:^{
    //Do Something
    } errorBlock:^(NSError *error, NSArray *errorArray) {    
       [self userModelUpdated];  // I want to call the method in the child class
      // but when I setup the break points, it calls the method in the parent class
    }
}

儿童班

·H

@interface childClass : BaseClass

的.m

@implementation ChildClass

-(void)viewWillAppear:(BOOL)animated
{
    [self updateModel];
}

-(void)userModelUpdated
{
  // update UILabels Here    
}

2 个答案:

答案 0 :(得分:3)

如果调用selfChildClassupdateModel的实例,那么将执行ChildClass的-userModelUpdated 实施

如果不是,那是因为你可能有一个BaseClass的实例,或者你有拼写错误。

将此添加到所有方法:

NSLog(@"%s", __PRETTY_FUNCTION__);

这将记录每一步的确切情况。

答案 1 :(得分:1)

听起来你的代码正在创建这个类族的实例是错误的,并且正在创建一个基类对象而不是子类对象。发布创建对象的代码并在其上调用方法。