Objective-C调用私有方法

Kam*_*ami 1 class-design objective-c private-methods

以下是Objective-C中私有方法的示例:

MyClass.m

#import "MyClass.h"


@interface MyClass (Private)
   -(void) privateMethod:(NSString *)arg1 and: (NSString*)arg2;
@end

@implementation MyClass

   -(void) publicMethod {
       NSLog(@"public method\n");
      /*call privateMethod with arg1, and arg2 ??? */
   }

   -(void) privateMethod:(NSString *)arg1 and: (NSString*)arg2{
       NSLog(@"Arg1 %@ and Arg2 %@", arg1, arg2);
   }

@end
Run Code Online (Sandbox Code Playgroud)

我读过有关私有接口/方法声明的内容.但是如何从其他公共方法调用它们?我试过了,[self privateMethod:@"Foo" and: @"Bar"]但看起来不对.

Ole*_*ann 8

是的,[self privateMethod:@"Foo" and:@"Bar"]是对的.它看起来有什么问题?你为什么不试试呢?

(顺便说一下,这是不是一个真正的私有方法,它只是隐藏在接口才会知道消息签名任何外部对象仍然可以调用它.在Objective-C是不存在的"真正的"私有方法.)

  • 实际上,您可以通过"空"类别模拟私有方法.对于进一步的讨论,请看[这里](http://stackoverflow.com/questions/172598/best-way-to-define-private-methods-for-a-class-in-objective-c) (2认同)