gpt4 book ai didi

iphone - 在接口(interface)文件 : when to use forward declaration for custom class as opposed to just including its header?

转载 作者:行者123 更新时间:2023-12-01 18:00:33 26 4
gpt4 key购买 nike

我有 UIViewController 的子类调用FullScreenViewController具有 ImageScrollView 类型的属性它是 UIScrollView 的子类目的。实现和接口(interface)如下所示:

FullScreenViewController.h

#import <UIKit/UIKit.h>

@class ImageScrollView;

@interface FullScreenViewController : UIViewController
{
ImageScrollView *_scrollView;

}

@property(nonatomic, retain) ImageScrollView *scrollView;

@end

FullScreenViewController.m
#import "FullScreenViewController.h"
#import "ImageScrollView.h"

@implementation FullScreenViewController

@synthesize scrollView = _scrollView;
...
@end

现在我继承 FullScreenViewController ,我尝试从 ImageScrollView 访问任何属性属性(property),我不断收到错误消息:“找不到属性(property)”。当我添加 ImageScrollView.h到子类,它有效,但我不明白这一点。我已经添加了 ImageScrollView.hFullScreenViewController ,为什么我必须再次添加它?

更新:我没有使用前向类声明,而是将 ImageScrollView.h 包含在 FullScreenViewController.h 中。我有点困惑,为什么我曾经使用前向声明而不是只包含 .h 文件?

最佳答案

您需要添加它的原因是您的 FullScreenViewController.h 文件中只有一个 @class 声明。这仅将 ImageScrollView* 类型的变量声明为指向 ImageScrollView 类对象的指针。它不允许您访问 ImageScrollView 的属性。要访问特定于 ImageScrollView 的方法和属性,您需要包含 ImageScrollView 的 @interface 声明,我假设它位于您的 ImageScrollView.h 文件中。

关于iphone - 在接口(interface)文件 : when to use forward declaration for custom class as opposed to just including its header?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10561578/

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