gpt4 book ai didi

iphone - 我是否必须为类的所有私有(private)方法声明一个类别?

转载 作者:行者123 更新时间:2023-12-03 20:27:52 26 4
gpt4 key购买 nike

假设我想让一个类的私有(private)方法仅对该类的实现可见,以便该类的接口(interface)仅公开需要公开的内容。在 Xcode 的某些最新版本中,我只需在 header 中省略方法的声明即可做到这一点。然而,一本好书建议我还应该在实现文件中声明一个类别并在其中声明该方法,如下所示:

// [in MyClass.m]
#import "MyClass.h"

// category declaration - is it really required?
// edit: it's a class extension declaration, I know, but it doesn't change much
@interface MyClass ()
- (void)myPrivateMethod;
@end

@implementation MyClass
- (void)myPrivateMethod
{
// do something
}
// all methods here can call myPrivateMethod
@end

它确实可以编译并工作。此外,它在没有类别/扩展声明部分的情况下编译和工作正常。这就提出了一个自然的问题:

如果我有一堆私有(private)方法,我需要在一个类别中声明所有这些方法吗?最佳实践是什么?

最佳答案

This is not a category, it's a class extension (注意,没有类别名称,括号为空)。

将私有(private)方法添加到类扩展中是一个非常好的主意。这样做可以确保所有方法都有声明,并且这些声明仅对您希望它们可见的代码部分可见。

请注意,与普通类别不同,类扩展允许您添加实例变量。当您的实现依赖于不属于您的类接口(interface)的类时,这非常方便。

关于iphone - 我是否必须为类的所有私有(private)方法声明一个类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11615210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com