XCTestCase超类方法对子类不可见

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XCTestCase超类方法对子类不可见相关的知识,希望对你有一定的参考价值。

我创建了以下XCTestCase超类:

//  FileNameTest.h

#import <XCTest/XCTest.h>

NS_ASSUME_NONNULL_BEGIN

@interface FileNameTest : XCTestCase

@end

NS_ASSUME_NONNULL_END

//  FileNameTest.m

#import "FileNameTest.h"

@implementation FileNameTest
- (void)setUp 
    [super setUp];


- (void)tearDown 
    [super tearDown];


- (void)helloMessage
  NSLog(@"Hello");


@end

和一个调用超类方法的子类:

//  FilenamePatternTest1.m

#import "FileNameTest.h"

@interface FilenamePatternTest1 : FileNameTest

@end

@implementation FilenamePatternTest1

- (void)testExample 
  [self helloMessage];


@end

但是子类不会编译。错误消息显示为:

'FilenamePatternTest1'的无可见@interface声明了选择器'helloMessage'

答案

Objective-C看不到.m文件中的声明。您将需要在超类的.h文件中声明要调用的方法。

以上是关于XCTestCase超类方法对子类不可见的主要内容,如果未能解决你的问题,请参考以下文章

超类中的受保护方法在不同包中的子类中是不是可见? [复制]

刘志梅 201771010115 《面向对象程序设计(java)》 第七周学习总结

Java--继承

JAVA如何实现深拷贝

使用“this”调用超类方法的子类

为啥继承在 Java 和 C++ 中的行为不同,超类调用(或不调用)子类的方法?