美文网首页
使用分类(category)可能发生的问题

使用分类(category)可能发生的问题

作者: 酷酷的哀殿 | 来源:发表于2016-03-25 15:24 被阅读103次

    如果两个分类实现了同样的方法,实际调用哪个是未定义的。

    比如NSString的分类NSStringExtensionMethods实现了- (BOOL)isEqualToString:(NSString *)aString;。如果我们在自己的分类里面也实现了- (BOOL)isEqualToString:(NSString *)aString;方法,则实际调用哪个是不确定的。

    为了避免这一现象发生,最好的解决方法是为分类内的方法名添加前缀,就好像给自定义的类添加前缀一样。

    读者可以选择同自定义一样的三个字母的前缀,但字母要小写,以便遵循方法命名的惯例,然后在前缀和正式的方法名之间添加一个下划线。

    @interface NSString (XYZAdditions)
    
    - (BOOL)xyz_isEqualToString:(NSString *)aString;
    
    @end
    

    这样就可以保证方法在运行时能够被正确调用。命名冲突的可能性被消除了:

    BOOL isEqual=[@"A string." xyz_isEqualToString:@"B string."];

    相关文章

      网友评论

          本文标题:使用分类(category)可能发生的问题

          本文链接:https://www.haomeiwen.com/subject/wnfdlttx.html