HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何将子类初始化为正确的类?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个名为SPPanelManager的类,它具有另一个类的属性,名为SPPanelSetTingsmanager. SPPanelManager的-init方法中包含以下内容

self.setTingsmanager = [[SPPanelSetTingsmanager alloc] init];

SPPanelManager的目的是进行子类化,并且在我的应用程序中使用子类.例如,有SPGreeTingManager.在SPGreeTingManager的.h文件中,我声明了:

@property (nonatomic,strong) SPGreeTingSetTingsmanager *setTingsmanager;

这使得setTingsmanager属于正确的类.问题是,当初始化SPGreeTingManager子类时,它会调用上面的init方法,并将setTingsmanager初始化为SPPanelSetTingsmanager类,而不是SPGreeTingSetTingsmanager.

我怎样才能将它初始化为该属性的正确类而无需在每个子类中重写init代码

解决方法

超类(SPPanelManager)必须知道具体面板管理器要将哪个类用作setTingsmanager.

Apple使用以下方法将CALayers与UIViews匹配:

基类声明一个返回具体SPPanelSetTingsmanager子类的类方法

// in SPPanelManager.h
+ (Class)setTingsmanagerClass;

…哪些子类重写以返回其自定义类:

// in SPGreeTingManager.m
+ (Class)setTingsmanagerClass
{
    return [SPGreeTingSetTingsmanager class];
}

现在,超类可以实例化设置管理器,如下所示:

self.setTingsmanager = [[[[self class] setTingsmanagerClass] alloc] init];

大佬总结

以上是大佬教程为你收集整理的ios – 如何将子类初始化为正确的类?全部内容,希望文章能够帮你解决ios – 如何将子类初始化为正确的类?所遇到的程序开发问题。

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

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