gpt4 book ai didi

ios - 防止自定义类被类别更改

转载 作者:行者123 更新时间:2023-11-29 01:09:36 25 4
gpt4 key购买 nike

假设我们有一个自定义库,其中包含一个继承自 UILabel 的类:

//MyLibCustomLabel.h
@interface MyLibCustomLabel : UILabel

MyLibCustomLabel 链接到 .xib 文件中的 UILabel,文本填充在 .xib 中。

此自定义库集成在一个项目中,该项目在 UILabel 类上有一个 Category,该类具有修改 UIlabel 文本的方法

//UILabel+UILabelAdditions.h
@interface UILabel (UILabelAdditions)


//UILabel+UILabelAdditions.m
@implementation UILabel (UILabelAdditions)

- (void)awakeFromNib {
[super awakeFromNib];

[self prependText];
}

-(void)prependText {
NSString *newText = [NSString stringWithFormat:@"blabla + %@", self.text];
self.text = newText;
}

最后,MyLibCustomLabel 中有一个不需要的修改。

在类中同时使用自定义类和类别的情况下,是否有办法保护 MyLibCustomLabel 免受 UILabel 上的任何类别的影响?

这样 MyLibCustomLabel 就不会以不受欢迎的方式被更改,并且在集成它的项目中也无需修改。

感谢您的帮助!

最佳答案

无法采取任何措施来“保护”类免受可能定义的类别的影响。

但请注意,您显示的示例 UILabel 类别无效。类别绝不能尝试覆盖现有方法,也不得尝试调用 super 方法。此类行为未定义,也不能保证按预期工作。

换句话说,类别的 awakeFromNib 方法是一个坏主意,不应该这样做。这样的事情只能在基类中尝试,而不是在类别中。

关于ios - 防止自定义类被类别更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35919792/

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