iPhone - 类停止查看超类'引用

时间:2011-01-26 01:35:44

标签: iphone class

我有这个课,我在.h

上有这样的东西
@interface myClass : UIImageView <UIGestureRecognizerDelegate>{

    @public id referenceOne;
    @public id referenceTwo;

}

@property (nonatomic,retain) id referenceOne;
@property (nonatomic,retain) id referenceTwo;

on .m我有

@synthesize referenceOne, referenceTwo;

此类没有委托协议。

我有其他基于此类的课程。对于其中一个类,我已经定义了一个委托协议,并且我的实现文件如下:

@protocol MyBasedClassDelegate <NSObject>
@optional

- (void) doStuff;

@end

@interface MyBasedClass : myClass {
    id<MyBasedClassDelegate> _delegate;
}

@property(nonatomic,assign) id<MyBasedClassDelegate> delegate;

和.m我有

@synthesize delegate;

一旦我定义了这个MyBasedClassDelegate,该类就停止看到继承自myClass的referenceOne和referenceTwo ids。现在Xcode说这些都没有声明。如果我禁用协议,它会再次看到引用。

为什么会这样,我该如何解决?

感谢。

2 个答案:

答案 0 :(得分:2)

您在此处有错误:

@interface MyBasedClass : myClass {
    id<MyBasedClassDelegate> _delegate;
}

重命名为

@interface MyBasedClass : myClass {
    id<MyBasedClassDelegate> delegate;
}

OR

做@synthesize delegate = _delegate;代替

编辑:

适合我

myClass.h

#import <Foundation/Foundation.h>


@interface myClass : UIImageView <UIGestureRecognizerDelegate> {
    id referenceOne;
    id referenceTwo;
}

@property (nonatomic,retain) id referenceOne;
@property (nonatomic,retain) id referenceTwo;

@end

myClass.m

#import "myClass.h"
@implementation myClass
@synthesize referenceOne, referenceTwo;
@end

MyBasedClass.h

#import <Foundation/Foundation.h>
#import "myClass.h"

@protocol MyBasedClassDelegate <NSObject>
@optional

- (void) doStuff;

@end

@interface MyBasedClass : myClass {
    id<MyBasedClassDelegate> delegate;
}

@property(nonatomic,assign) id<MyBasedClassDelegate> delegate;

@end

MyBasedClass.m

#import "MyBasedClass.h"


@implementation MyBasedClass
@synthesize delegate;
-(void) dosmth {
    referenceOne = nil;
}
@end

答案 1 :(得分:1)

如果您将变量名称“_delegate”更改为“委托”,我认为它可能会起作用。 (或者,注释掉合成行,它也应该有用)。

我今天早些时候遇到了类似的事情 - 如果你合成了不存在的实例变量的属性,编译器不会抱怨但是由于某种原因你不能再看到超类的变量了。

对我来说,发现http://www.iphonedevsdk.com/forum/iphone-sdk-development/53261-unable-access-superclass-member-variables-subclass-implementation.html有帮助。