我怎么叫的原有功能,从过载功能在一个类别?
-
19-09-2019 - |
题
在目标C中,我有一个类别中的一类:
@interface UILabel(CustomInit)
- (id)initWithCoder:(NSCoder *)coder;
@end
什么我做的是写一个自定义的初始功能,做一些额外的东西,我想要做的,就是在这个定义的初始功能,调用UILabel的基initWithCoder.这可能吗?怎么会这样?
编辑
谢谢。Ok,因此我的计划没有实际意义。不能只是载initWithCoder.有没有一种方法来实现相同的功能(这里所有Uilabel获得此添加的初始步骤)没有超载initWithCoder?或者也许是有样品代码为UILabel的initWithCoder,我可以只是重写有所加入的代码?
编辑
好的所以是明确的关于什么的我想:
有一个答复,其中有人手动增加一个自定义的字体在iphone上使用私GraphicServices功能GSFontAddFromFile.我尝试过这种代码和它的工作大为手动设置的字体标签。然而,如果试图设置的字体在接口的建设者,它不负载正确的,它只是下降到系统的字体。什么我想要做的是装载的字体手动,并设置标签的字体自动与选字体在IB。这样我就不需要一个出口为每一标签我放下。我还没有写一荒谬的标签类(其中还建议在线程和做大量的定制的绘图)我发现反而怪诞.现在我仍然可以做一个子类对于我所有的标签,但后来没有的情况下嵌入的标签,在其他UI对象,即UIButtons.我想嵌入的标签也是不可打破。
任何建议将是巨大的。谢谢。
解决方案 2
你们如何看待这一点?
在运行时抢的initWithCoder原方法的地址,并将其存储在一个静态变量。做它的方法调酒,以取代与我的initWithCoder类实现。然后在我的initWithCoder,我会调用存储在静态变量的原始方法。
您可以把它放在一个类别,并呼吁在程序开始这个类初始化步骤,确保其不能被称为两次,或者如果它什么都不做。
这似乎危险的,但我觉得它应该工作。
其他提示
当一个类别替代 继承 方法, 方法,该方法中的类别 可以像往常一样,援用该继承的 执行通过的消息。然而,如果一类别复盖 方法 已经存在的 类别的类, 有没有办法 援引的原始实施。
方法混写应该工作作为kidnamedlox建议。
您完全相同的问题是由埃文娃娃在此斯坦福的iTunes类讨论
https://podcasts.apple.com / US /播客/ iphone-应用编程弹簧-2009 / id384233222