gpt4 book ai didi

objective-c - 何时以及为何使用@interface ClassName(私有(private))? - Objective-C

转载 作者:技术小花猫 更新时间:2023-10-29 11:00:15 25 4
gpt4 key购买 nike

我在看一些代码:

@interface ClassName (Private)

- (float)methodOne:(NSDictionary *)argOne;
- (void)methodTwo:(NSDictionary *)argTwo;

@end

@implementation ClassName
....

上述代码位于 ClassName.m 文件的顶部,该文件似乎将类的其他接口(interface)方法定义为私有(private)?

为什么要这样做?重点是什么?还有什么可以去(私有(private))的地方?有人有这方面的文档吗?

谢谢

最佳答案

这是一种防止类内部使用的方法暴露给其他人的方法。它是封装的一部分。在 Objective-C 2.0(iOS 和 Mac OS X 10.5+)中,更常见的是在实现文件的顶部使用类扩展:

@interface ClassName ()

- (void)privateMethod;

@end

类扩展实际上只是类别的一个特例(这就是您所询问的)。主要区别在于,对于一​​个类别,即使您的@implementation 不包含类别中声明的方法的定义,编译器也不会报错。对于类扩展中的方法,您的类必须在其主 @implementation block 中实现这些方法,否则您将收到编译器警告。

最好在 iOS 代码或至少针对 Mac OS X 10.5 Leopard 的 Mac 代码中使用类扩展。

关于objective-c - 何时以及为何使用@interface ClassName(私有(private))? - Objective-C ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9102861/

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