【问题标题】:“Property implementation must have its declaration in interface” error in iOS [duplicate]iOS中的“属性实现必须在接口中声明”错误[重复]
【发布时间】:2012-02-01 11:20:56
【问题描述】:

可能重复:
Objective C: “Property implementation must have its declaration in interface”

我在另一个 viewController 中全局声明了一个 viewController 的对象。

我很确定

1- 我已经导入了必要的 viewController 类

2 - 我已经在 .h 文件中为该对象编写了 @property(nonatomic, retain)

3 - 我已经合成了相同的对象 .m 文件

但我仍然收到错误消息说“属性实现必须在接口中声明”。我在这里做错了什么......我一直在这个问题上摸不着头脑......

.h 文件

#import "viewController1.h"

@interface viewController2 :UIViewController<UITableViewDelegate,UITableViewDataSource>{        
    viewController2 *vc2;
}

@property(nonatomic,retain)viewController2 *vc2;

-(void)someMethod;

@end

.m 文件

#import "viewController2.h"

@implementation viewController2

@synthesize vc2;

@end

【问题讨论】:

  • 可以给我们看一些代码/截图吗?
  • 您能发布声明该属性的类的标题吗?如果我们能看到一些代码,我们将能够提供帮助。
  • 你在设置属性前是否在界面中声明了变量?
  • 是的......为了回答你的问题需要一些解释......只有一件事......在Obj-C中没有全局变量这样的东西所有变量都是私有的定义。
  • @Marsson Objective-C 是 ANSI C 的超集,因此确实存在全局变量。您的声明“在 Obj-C 中,所有变量根据定义都是私有的”虽然更令人困惑。您是指所有实例变量吗?实例变量默认是受保护的,不是私有的,并且可以修改它们的可见性。

标签: iphone objective-c ios properties getter-setter


【解决方案1】:
  1. 清理您的项目
  2. 像这样声明属性:@property(readwrite,retain)viewController2 *vc2;

【讨论】:

    【解决方案2】:

    这样使用(使用@class指令)

     @class YourClassName
     @interface Second : UIViewController
    {
    
    }
    @property(nonatomic, retain) YourClassName *obj;
    

    在.m文件中合成。

    【讨论】:

    • hi ishu .. 就像我在问题中提到的那样,我做了完全相同的事情,但仍然出现错误... :(
    • @A for Alpha,你正在导入文件,试试上面提到的 class 指令
    猜你喜欢
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 2012-01-23
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    相关资源
    最近更新 更多