我在UIView上有一个实现- (void)setWidth:(CGFLoat)newWidth
的类别,它通过更改视图的框架和具有相同方法的静态库来设置宽度。
我在整个项目中使用该类别,将其添加到.pch(前缀标题)文件中。
当我尝试使用库方法时,我的类别会覆盖setWidth:方法,并且永远不会调用库。我真的不想从前缀标题中删除类别,因为这会导致项目其余部分出现严重问题。
有任何想法如何解决此问题?
谢谢!
〜LSonic
答案 0 :(得分:1)
不幸的是,Objective-C方法(包括类别中的方法)存在于同一名称空间中。如果有两个具有相同名称的方法实现,则不定义在运行时调用的方法。
这在Apple的使用Objective-C编程的Avoid Category Method Name Clashes中进行了讨论。
没有比为类别中的方法名称添加前缀更好的方法了。例如:
- (void)ls_setWidth:(CGFLoat)newWidth;
另外see this question了解更多信息。