Iphone 使用自定义方法从控制器向NSView通信上下文时出现警告

Iphone 使用自定义方法从控制器向NSView通信上下文时出现警告,iphone,objective-c,Iphone,Objective C,针对iPhone的UIKit进行编码 设置,包括相关详细信息: SomeView.h: #import <UIKit/UIKit.h> @interface SomeView : UIView { SomeObject *myObject; } @property (assign) SomeObject *myObject; -(void) doSomething; @end 控制器h: #import <UIKit/UIKit.h> #import "

针对iPhone的UIKit进行编码

设置,包括相关详细信息:

SomeView.h:

#import <UIKit/UIKit.h>

@interface SomeView : UIView {
    SomeObject *myObject;
}

@property (assign) SomeObject *myObject;

-(void) doSomething;

@end
控制器h:

#import <UIKit/UIKit.h>
#import "SomeView.h"

@interface Controller : NSObject {
    IBOutlet UIView *someView;
}

@end
我正在Interface Builder中实例化controller对象,SomeView是我应用程序主窗口中自定义UIView之一的类

现在,问题是:

1) 当我运行上述命令时,我会收到两行警告:“警告:'UIView可能不会响应'doSomething'”和setSomeObject的类似警告。为什么?(代码似乎确实有效,但我不喜欢看到警告。)


2) 这是正确的做事方式吗?我真正想要的是让SomeView知道someObject,这样当调用drawRect for SomeView时,它可以根据someObject的当前状态更改其行为。我不需要将对象直接放在SomeView中;我可以将它放在控制器中,但是视图仍然需要一些信息,这些信息在运行时可能会更改。

您声明了
someView
作为UIView的实例,但是
doSomething
是someView的一种方法。所以它是正确的-您告诉编译器变量指向的类没有响应该消息。如果您不想看到警告,则必须将其设置为
SomeView*
,而不是
UIView*


否则,在我看来,您的总体架构还可以。

您声明了
someView
作为UIView的一个实例,但是
doSomething
是someView的一种方法。所以它是正确的-您告诉编译器变量指向的类没有响应该消息。如果您不想看到警告,则必须将其设置为
SomeView*
,而不是
UIView*


否则,您的总体架构在我看来还可以。

谢谢,就是这样,我在控制器标题中的类型错误。谢谢,就是这样,我在控制器标题中的类型错误。
#import <UIKit/UIKit.h>
#import "SomeView.h"

@interface Controller : NSObject {
    IBOutlet UIView *someView;
}

@end
#import "Controller.h"

@implementation Controller

-(void)awakeFromNib {

    [someView doSomething];
    [someView setSomeObject:someObject]; 
}
@end