HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 转发课程作为超级课程大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用AFNetworking进行静态库.我想只用.a和.h文件分发库.

但是,我的库中的一个类是AFhttpSessionManager的子类.所以我之前的.h文件看起来像这样

#import <Foundation/Foundation.h>
#import "AFNetworking.h"

@interface MyClass : AFhttpSessionManager

+ (MyClass *) sharedInstance;

- (void) doMagic;

@end

当我编译库并将.a和.h文件导入新的测试项目时,我收到错误“未找到词法或预处理器问题’AFNetworking.h’文件”.认为解决方案是使用前向类声明并将#import“AFNetworking.h”移动到.m文件中,如下所示:

#import <Foundation/Foundation.h>

@class AFhttpSessionManager;

@interface MyClass : AFhttpSessionManager

+ (MyClass *) sharedInstance;

- (void) doMagic;

@end

不幸的是,这种方法抛出了一个错误“尝试使用前向类’AFhttpSessionManager’作为’MyClass’的超类”.@H_675_17@据我所知,前向类声明你只是说“嘿编译器classXXX存在,但你看不到它的方法和@L_674_12@”.因此,我不确定这是否是我的问题的解决方案.

有什么建议如何从类中继承但不导入它?

解决方法

您不能子类化其标头不可用的类.您可以做的最好的事情是使您的AFhttpSessionManager的子类成为私有,而是公开一个类(NSObject的子类,比如说)作为外观,将消息转发给您的私有类.

您还可以使用协议作为类的接口,并公开一个返回id< MyClassProtocol>的方法.就像是:

@protocol MyClassProtocol
- (void) doMagic;
@end

id<MyClassProtocol> GetSharedInstance();

然后有一个这样的类,它不会从你的库中暴露出来:

@interface MyClass<MyClassProtocol>: AFhttpSessionManager
// ...
@end

您可以实例化并从GetSharedInstance返回.

大佬总结

以上是大佬教程为你收集整理的ios – 转发课程作为超级课程全部内容,希望文章能够帮你解决ios – 转发课程作为超级课程所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。