代码之家  ›  专栏  ›  技术社区  ›  TheLearner

私有方法作为公共方法出现

  •  4
  • TheLearner  · 技术社区  · 14 年前

    .m文件:

    @interface NSContentWebServiceController (private)
    
    - (NSString *)flattenHTML:(NSString *)html;
    - (NSString *)cleanseStringOfJsonP:(NSString *)jsonP;
    - (void)retrieve:(NSasdf *)hasdel :(NSDictionary *)rootList;   
    - (NSString *)removeHTMLTagsFromString:(NSString *)aString;
    
    @end
    
    2 回复  |  直到 13 年前
        1
  •  3
  •   Joost    14 年前

    私有方法只有在头文件中没有记录的情况下才是私有的。因为这个你不能 #import

    您可以像调用公共方法一样调用这些方法,因为它只是 哪里 声明使方法私有的原型,Objective-C没有隐藏的、真正私有的方法。

    在运行时,您将

    id _internal 实例变量,它指向一个完成所有工作的对象,这样调用私有方法就有点困难,尽管不是不可能。

        2
  •  5
  •   DarkDust    14 年前

    正如JoostK所说,Objto-C中没有私有方法,就像C++、java或C语言中的方法一样。

    最重要的是 @interface NSContentWebServiceController (private) 在Objective-C中定义了一个所谓的类别 private 这里只是一个类别的名称,没有任何意义。有点像 yellowBunny 在这里也会产生同样的效果。类别仅仅是将一个类分解为若干部分的一种方法,但在运行时,所有类别都有效。请注意,类别只能向对象类添加新方法,而不能添加新变量。

    对于私有类别,现在首选使用匿名类别,如 @interface MyClass() ,因为你不需要一个单独的 @implementation MyClass(yellowBunny) @implementation 阻止。

    看到了吗 "Categories" section in the Wikipedia entry on Objective-C 更多信息。