1

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

我的班级.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

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

4

2 回答 2

8

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

(顺便说一句,它不是真正的私有方法,它只是从接口中隐藏。任何知道消息签名的外部对象仍然可以调用它。“真正的”私有方法在 Objective-C 中不存在。)

于 2011-01-25T13:28:23.810 回答
2

试试下面的。“私有”接口应在().

我的类.h

@interface MyClass : NSObject
   -(void) publicMethod;
@property int publicInt;
@end

我的班级.m

#import "MyClass.h"

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

@implementation MyClass

@synthesize publicInt = _Int;
@synthesize privateFloat = _pFloat;

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

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

@end
于 2011-01-25T13:34:27.663 回答