在@interface中声明类实例

Sam*_*Sam 1 objective-c ios

ViewController我想创建在 .h 文件开头导入的类型变量

KTOneFingerRotationGestureRecognizer.h

#import <UIKit/UIKit.h>
@class ViewController.h;


@interface KTOneFingerRotationGestureRecognizer : UIGestureRecognizer
{
    ViewController* mainViewController; // error: Unknown type name `ViewController`; did you mean `UIViewController`?
}

@property (nonatomic, assign) CGFloat rotation;

@property (nonatomic, strong) ViewController* mainViewController; // error: Unknown type name `ViewController`; did you mean `UIViewController`?

@end
Run Code Online (Sandbox Code Playgroud)

我需要这些变量位于头文件中,因为它们必须可以从类外部访问和分配。

谢谢

编辑:

感谢您的回复。正如 LostInTransit 所建议的,错误是由于ViewControllerKTOneFingerRotationGestureRecognizerKTOneFignerRotationGestureRecognizer从导入而发生的ViewController。按照建议,我将其更改#import "ViewController.h"@class ViewController;消除了错误,但现在我的代码无法使用。

访问的目的ViewController是我想ViewController从中检索对象的位置KTOneFingerRotationGestureRecognizer,但@class声明不允许我访问该变量。我来演示一下。

视图控制器.h

#import <UIKit/UIKit.h>

#import "KTOneFingerRotationGestureRecognizer.h"

@interface ViewController : UIViewController
{
    UIView* pitchCircleView;
}

@property (nonatomic, strong) UIView* pitchCircleView;

@end
Run Code Online (Sandbox Code Playgroud)

我正在尝试在以下位置检索它:

KTOneFingerRotationGestureRecognizer.m

float f = mainViewController.pitchCircleView.frame.origin.x;

但它给了我错误:Property pitchCircleView cannot be found in forward class object ViewController

los*_*sit 5

尝试使用@class而不是#import. 然后在执行中导入。您可能会因为循环包含(即您的ViewController类导入KTOneFingerRotationGestureRecognizer)而看到这一点 - 但在我们看到一些代码之前无法确定。