objective-c - 在 Objective-C 中为类定义私有(private)方法的最佳方

我刚开始编写 Objective-C 并且具有 Java 背景,想知道编写 Objective-C 程序的人如何处理私有(private)方法。

我了解可能存在多种约定和习惯,并将此问题视为人们在处理 Objective-C 中私有(private)方法时使用的最佳技术的集合。

请在发布时为您的方法提供一个论据。为什么好?它有哪些(您知道的)缺点以及您如何处理它们?


至于我目前的发现。

可以使用categories [例如。 MyClass (Private)] 在 MyClass.m 文件中定义,用于对私有(private)方法进行分组。

这种方法有两个问题:

  1. Xcode(和编译器?)不会检查您是否在相应的@implementation block 中定义了私有(private)类别中的所有方法
  2. 您必须将 @interface 声明您的私有(private)类别放在 MyClass.m 文件的开头,否则 Xcode 会显示类似“self may not respond to message "privateFoo"这样的消息。

第一个问题可以通过 empty category 解决。 [例如。 MyClass()].
第二个让我很困扰。我希望看到在文件末尾附近实现(和定义)私有(private)方法;我不知道这是否可能。

最佳答案

正如其他人已经说过的那样,Objective-C 中没有私有(private)方法这样的东西。但是,从 Objective-C 2.0(意味着 Mac OS X Leopard、iPhone OS 2.0 及更高版本)开始,您可以创建一个名为 的具有空名称(即 @interface MyClass ())的类别类扩展。类扩展的独特之处在于方法实现必须与公共(public)方法位于相同的 @implementation MyClass 中。所以我的类(class)结构是这样的:

在.h文件中:

@interface MyClass {
    // My Instance Variables
}

- (void)myPublicMethod;

@end

在.m文件中:

@interface MyClass()

- (void)myPrivateMethod;

@end

@implementation MyClass

- (void)myPublicMethod {
    // Implementation goes here
}

- (void)myPrivateMethod {
    // Implementation goes here
}

@end

我认为这种方法的最大优势在于它允许您按功能对方法实现进行分组,而不是按(有时是任意的)公共(public)/私有(private)区分。

关于objective-c - 在 Objective-C 中为类定义私有(private)方法的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/172598/

相关文章:

objective-c - "sending ' 常量 NSString * ' to parame

objective-c - 如何在 Objective-C 中反转 NSArray?

objective-c - 如何纯粹用 C 编写 iOS 应用程序

iphone - 按下时 UILongPressGestureRecognizer 被调用两次

objective-c - objectForKey 和 valueForKey 的区别?

objective-c - Xcode 的隐藏功能

iphone - 您在编写 Objective-C 和 Cocoa 时使用了哪些最佳实践?

ios - 如何删除 UITableView 中的空单元格?

objective-c - 如何使用 NSTimer?

iphone - 如何在 UIView 下绘制阴影?