Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:只允许某个类访问另一个类中的特定私有方法?_Ios_Objective C_Class_Methods_Private - Fatal编程技术网

iOS:只允许某个类访问另一个类中的特定私有方法?

iOS:只允许某个类访问另一个类中的特定私有方法?,ios,objective-c,class,methods,private,Ios,Objective C,Class,Methods,Private,我在类a中有一些public和price方法。我在类B中使用相同的方法,但是我不想在这两个类中复制和粘贴这些方法,而是想从类B访问类a的私有方法 问题是我不希望任何其他类能够访问B以外的这些特定私有方法 做这件事最好的方法是什么 另外,我想将私有方法公开,但是其他任何类都可以访问它们,这是我不想要的(这是针对开源项目的)。我不介意复制和粘贴方法,但我想知道处理这种事情的“正确”方法是什么 谢谢 您可以使用私有标题 MyClassA.h @interface MyClassA : NSObject

我在类a中有一些public和price方法。我在类B中使用相同的方法,但是我不想在这两个类中复制和粘贴这些方法,而是想从类B访问类a的私有方法

问题是我不希望任何其他类能够访问B以外的这些特定私有方法

做这件事最好的方法是什么

另外,我想将私有方法公开,但是其他任何类都可以访问它们,这是我不想要的(这是针对开源项目的)。我不介意复制和粘贴方法,但我想知道处理这种事情的“正确”方法是什么


谢谢

您可以使用私有标题

MyClassA.h

@interface MyClassA : NSObject

- (void)publicMethod;

@end
#import "MyClassA.h"

@interface MyClass (Private)

- (void)packageMethod;

@end
MyClassA\u Private.h

@interface MyClassA : NSObject

- (void)publicMethod;

@end
#import "MyClassA.h"

@interface MyClass (Private)

- (void)packageMethod;

@end

您可以使用私有头

MyClassA.h

@interface MyClassA : NSObject

- (void)publicMethod;

@end
#import "MyClassA.h"

@interface MyClass (Private)

- (void)packageMethod;

@end
MyClassA\u Private.h

@interface MyClassA : NSObject

- (void)publicMethod;

@end
#import "MyClassA.h"

@interface MyClass (Private)

- (void)packageMethod;

@end

除非其他类导入类A,否则这不会是个问题,是吗?但是其他类确实导入了它,因为类A和类B都有开发人员可以访问的公共方法,我宁愿不合并这两个类,因为它们相当大,而且恰好是不同对象上的类别。你在这里想保护什么?(这是一个开源项目有什么关系?)你是否担心人们错误地依赖于你将来可能想要改变的方法,或者你是在试图隐藏一些功能或什么?这些都是“主要公共方法”的辅助方法,我只是喜欢保持项目的整洁。因此,当开发人员准备输入一个方法的名称时,我不希望这些助手方法被推荐给他们,因为他们永远不会使用它们,或者至少我不希望他们使用它们。这是我个人的喜好。这也是我提到开源项目的原因。除非其他类导入类A,否则这不会是一个问题吗?是吗?但其他类确实导入了它,因为类A和类B都有开发人员可以访问的公共方法,我宁愿不合并这两个类,因为它们相当大,而且恰好是不同对象上的类别。你在这里想保护什么?(这是一个开源项目有什么关系?)你是否担心人们错误地依赖于你将来可能想要改变的方法,或者你是在试图隐藏一些功能或什么?这些都是“主要公共方法”的辅助方法,我只是喜欢保持项目的整洁。因此,当开发人员准备输入一个方法的名称时,我不希望这些助手方法被推荐给他们,因为他们永远不会使用它们,或者至少我不希望他们使用它们。这是我个人的喜好。这也是我提到开源项目的原因。我建议
MyClassA_Private.h
MyClassA
@实现之前使用类扩展和所说的
\import
ed扩展。我建议
MyClassA_Private.h
使用类扩展和
\import
ed扩展在
MyClassA
@实现之前