前缀头导入取消了库的相同方法的实现

时间:2013-08-30 12:51:20

标签: ios objective-c xcode4

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

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

有任何想法如何解决此问题?

谢谢!

〜LSonic

1 个答案:

答案 0 :(得分:1)

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

这在Apple的使用Objective-C编程Avoid Category Method Name Clashes中进行了讨论。

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

- (void)ls_setWidth:(CGFLoat)newWidth;

另外see this question了解更多信息。