gpt4 book ai didi

objective-c - 为什么@implementation 上面有@interface?

转载 作者:IT老高 更新时间:2023-10-28 11:49:25 24 4
gpt4 key购买 nike

我想知道为什么会有两次 @interface。一个在 class.h 中,另一个在 class.m 中。例如:

TestTableViewController.h:

#import <UIKit/UIKit.h>

@interface TestTableViewController : UITableViewController

@end

和(自动生成的)class.m 我发现:

#import "TestTableViewController.h"

@interface TestTableViewController ()

@end

@implementation TestTableViewController

... methods delegated from UITable delegates

@end

所以我的问题是,.m 文件中的 @interface TestTableViewController () 是关于什么的。为什么它在那里?我需要吗?

提前致谢

最佳答案

第二个 @interface 指令在实现文件 (.m) 中——你可以从中推断出它是用来声明类的创建者不想暴露的东西类的用户。这通常意味着私有(private)和/或内部方法和属性。另请注意,这样做有两种类型。一个(您在此处看到)称为“类扩展”,它由一对空括号表示:

@interface MyClass ()

这一点特别重要,因为您可以使用它向您的类添加额外的实例变量。

第二个,称为“类别”,由一对非空括号表示,包含类别名称,如下所示:

@interface MyClass (CategoryName)

它也用于扩展类。您不能使用类别将实例变量添加到一个类中,但是您可以为同一个类有多个类别,这就是它主要用于扩展您没有源代码的系统/框架类的原因——所以从这个意义上说,类别与类扩展完全相反。

关于objective-c - 为什么@implementation 上面有@interface?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11594391/

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