gpt4 book ai didi

iphone - 如何从类别中的重载函数调用原始函数?

转载 作者:太空狗 更新时间:2023-10-30 03:57:08 26 4
gpt4 key购买 nike

在 Objective-C 中,我有一个类的类别:

@interface UILabel(CustomInit)

- (id)initWithCoder:(NSCoder *)coder;

@end

我正在做的是编写一个自定义初始化函数来做一些额外的事情,而我想做的是在这个自定义初始化函数中调用 UILabel 的基础 initWithCoder。这可能吗?怎么会这样?

编辑

谢谢。好的,所以我的计划没有实际意义。不能只是重载 initWithCoder。有没有一种方法可以在不重载 initWithCoder 的情况下实现相同的功能(所有 UILabel 都获得这个添加的初始化步骤)?或者是否有 UILabel 的 initWithCoder 的示例代码,我可以用添加的代码重写?

编辑

好的,所以要清楚我正在尝试什么:

Can I embed a custom font in an iPhone application?

有一个答案,其中有人使用私有(private) GraphicServices 函数 GSFontAddFromFile 在 iphone 上手动添加自定义字体。我试过这段代码,它非常适合手动设置标签的字体。但是,如果您尝试在 Interface Builder 中设置字体,它不会正确加载,它只会下降到系统字体。我想做的是手动加载字体并使用 IB 中选择的字体自动设置标签的字体。这样我就不需要为我放下的每个标签制作一个导出。我也不必编写一个荒谬的标签子类(该线程中也有人建议并进行大量自定义绘图),我觉得这很奇怪。现在我仍然可以为我的所有标签创建一个子类,但是在其他 UI 对象(即 UIButtons)中有嵌入标签的情况。我希望嵌入式标签也不会被破坏。

任何建议都会很棒。谢谢。

最佳答案

来自Mac OS X Reference Library :

When a category overrides an inherited method, the method in the category can, as usual, invoke the inherited implementation via a message to super. However, if a category overrides a method that already existed in the category's class, there is no way to invoke the original implementation.

关于iphone - 如何从类别中的重载函数调用原始函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1514692/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com