如何扩展课程

时间:2013-12-02 07:33:03

标签: objective-c

我有一个名为VideoListViewController的类,它是一个抽象类(即仅用于子类化)。现在我想在ShareViewControllerMyVideosViewController中进行扩展。例如,在Python中将是

class VideoListViewController (UIViewController):
    # implementation

class ShareViewController (VideoListViewController):
    # implementation

class MyVideosViewController (VideoListViewController):
    # implementation

我拥有的是:

// VideoListViewController.h

@interface VideoListViewController : UIViewController
// interface declaration
@end


// ShareViewController.h

#import "VideoListViewController.h"
@interface ShareViewController : VideoListViewController   
                                // ^ this line shows an error
// interface declaration
@end

但这不会编译(Cannot find interface declaration for 'VideoListViewController', superclass of 'ShareViewController')。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

如果“VideoListViewController”类未编译并且本身有错误,因此无法由另一个类扩展,则会发生这种情况。请尝试以下方法 -

  1. 尝试清理构建。
  2. 尝试导入“< UIKit / UIKit.h>”在VideoListViewController.h中,因为它扩展了UIViewController?在 -
  3. // VideoListViewController.h

    #import <UIKit/UIKit.h>
    
    @interface VideoListViewController : UIViewController
    
    @end
    

    3。检查目标成员资格中是否包含“VideoListViewController.m”。要检查这一点,请在导航器中选择VideoListViewController.m文件并打开文件检查器。在“目标成员资格”下,应检查您正在构建的目标。如果没有检查。在创建提供此选项的文件时,您可能已经忘记了这一点。

    4.这可能是循环引用的问题。确保在超类中没有子类的任何头文件。和VideoListViewController.h中的#import ShareViewController.h一样。如果你有,也可以查看任何@class引用。

答案 1 :(得分:0)

您可以通过在VideoListViewController中实现指定的初始化程序(init方法)并从中返回nil来完成此操作。然后它将成为一个抽象类。