【问题标题】:ERROR: Cannot declare variable inside @interface or @protocol错误:不能在@interface 或@protocol 中声明变量
【发布时间】:2012-06-13 21:53:53
【问题描述】:

我单击了 Modernize Project,然后出现了一些编译错误。 (我确实拍了快照)

错误是:不能在@interface 或@protocol 中声明变量

这里是复制粘贴格式的代码。

#import <Cocoa/Cocoa.h>
#import "AJHBezierUtils.h"

@interface NSBezierPath (WBBezierPath) 

NSBezierPath        *flattenPath;

NSPointArray        points;

int                 numPoints;


+(NSBezierPath*)roundedPath:(NSRect)aRect radius2:(int)rad2;


-(NSPoint ) getLinePoints:(NSPoint )p1 p2:(NSPoint)p2  withDistance:(int )pointDistance;

- (NSPoint *)pointsFromPathWithDistance:(int)distance numberOfPoints:(int *)numberOfPoints;


- (float)distanceBetweenPoint:(NSPoint)a andPoint:(NSPoint)b;

- (int)numberOfPoints;

【问题讨论】:

    标签: objective-c xcode macos xcode4 xcode4.2


    【解决方案1】:

    接口 ivars 需要大括号:

    @interface NSBezierPath (WBBezierPath)
    {
      NSBezierPath        *flattenPath;
      NSPointArray        points;
      int                 numPoints;
    }
    

    但是,因为您要定义一个类别,所以不允许使用 ivars。您需要改用属性:

    @interface NSBezierPath (WBBezierPath)
    
    @property (nonatomic, strong) NSBezierPath *flattenPath;
    
    /* Methods */
    
    @end
    

    【讨论】:

    • 正是我刚刚输入的内容,你打败了我;)
    • 感谢大家的快速回复!我这样做了.....但这会产生更多错误....将发布屏幕截图。 screencast.com/t/B1pfn3yPlKor
    • 在您的新屏幕截图中,您使用右大括号 ("}") 而不是左大括号 ("{")。如果你没有隐藏第一个错误标签,我相信它会告诉你。
    • 对不起,这只是一个粗心的错误。修复了大括号问题.. 并得到了这个:linkscreencast.com/t/khfHcEaTGS2
    • 我已针对您的特殊情况修改了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多