0

我在 UIView 上有一个实现的类别- (void)setWidth:(CGFLoat)newWidth,它通过更改视图的框架和具有相同方法的静态库来设置宽度。我通过将其添加到 .pch(前缀标头)文件中来在整个项目中使用该类别。

当我尝试使用库方法时,我的类别会覆盖 setWidth: 方法,并且永远不会调用库。我真的不想从前缀标题中删除类别,因为这会导致项目的其余部分出现严重问题。

任何想法如何解决这个问题?

谢谢!

~Lsonic

4

1 回答 1

1

不幸的是,Objective-C 方法(包括那些来自类别的方法)存在于同一个命名空间中。如果有两个同名的方法实现,则不定义在运行时调用哪个。

这在避免Apple 的Objective-C 编程中的类别方法名称冲突中进行了讨论。

没有比在类别中为方法名称添加前缀更好的方法了。例如:

- (void)ls_setWidth:(CGFLoat)newWidth;

请参阅此问题了解更多信息。

于 2013-08-30T13:13:11.780 回答