gpt4 book ai didi

c# - 正确的 Objective-C Helper "Wannabe"私有(private)方法?

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:30 25 4
gpt4 key购买 nike

虽然我讨厌在这个问题上把马打死(我已经阅读了很多关于这个的文章),但是我想在我创建我自己的“约定”之前就这个问题获得更多的意见从现在开始使用在 Objective-C 中编码时打开。

我想弄清楚的约定最终是如何(对生产级代码使用最佳编码实践)在类中使用私有(private)方法。来自 C# 的背景,当我编写类时,通常有一个代码块在多个公共(public)方法(例如错误检查或 WCF 服务连接设置)中重复。我通常创建一个代码块并将其放在一个私有(private)方法中,仅供这些公共(public)方法访问。这样,如果我需要进行更改,我只需要在一个地方进行,而不是在一个类中的 10 个不同的地方进行,但是永远不会让用户能够调用这个私有(private)方法。例如:

public Class A
{
public void method1()
{
doErrorChecking()
// Do more stuff
}
public void method2()
{
doErrorChecking()
// Do more stuff
}
private doErrorChecking() { //Error Checking Code}
}

我知道在 Objective-C 中没有真正的方法可以真正使最后一个方法私有(private)化,但我真的想确保当我在 Objective-C 中为 iOS 开发创建所有 future 的类时,我遵循最好的方法可用的实践,因此将来不需要(希望)对此问题进行代码重构。我注意到有人在谈论类别,其他人只是不将方法放在 @interface 文件中,而其他人则使用扩展方法。目前我只是将方法实现放在@implementation 文件中,而不是接口(interface)文件。我还让“wannabe”私有(private)方法有一个真正不同的名称,这样子类化或覆盖方法就不是问题了。这是我应该走的路吗?或者对于这些特定场景有更好的方法吗?

最佳答案

是的,将您的功能提取到另一种方法中是完全合理的。在我看来,最好的方法是使用 class continuation,您可以将私有(private)方法声明放入其中。它可以在 @implementation block 之上 .m 文件,所以它不在公共(public) header 中。

@interface MyClass ()
- (void)_privateMethod:(id)arg;
@end

类延续和普通类别(例如@interface MyClass (PrivateMethods))的区别在于,编译器会要求您实现主@implementation<中的方法 block ,而不是单独的 @implementation MyClass (PrivateMethods) block 。在实现您描述的辅助方法时,这可以说是可取的。

在命名方面,_ 开头的私有(private)方法名称(和 ivar 名称,就此而言)是相对常见的,尽管不是每个人都这样做——显然是 Apple reserves this for themselves , 所以你应该选择一个不同的前缀。该语言不强制执行任何内容。

关于c# - 正确的 Objective-C Helper "Wannabe"私有(private)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6929300/

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