0

好的,我得到了代码签名(事实证明,您不再需要在构建日志中查看代码签名和 embedded.mobileprovision 了!)但我想摆脱我的“可能不响应”警告。查看有关这些警告的所有其他帖子后,我找不到问题...

在 Welcome_backView.h 中:

 @interface Welcome_backView : UIView {
Welcome_backViewController *refParentViewController;

}


- (id)initWithParentViewController:(Welcome_backViewController *)parent;
- (void)setSubviewsToLandscape;
- (void)setSubviewsToPortrait;

在 Welcome_back.m 中,

  #import "Welcome_backView.h"
  #import "Welcome_backViewController.h"
  @interface Welcome_backView()
//

@end

@implementation Welcome_backView



 - (void)setSubviewsToPortrait{
//do great things
 }

 - (void)setSubviewsToLandscape{
    //do more great things
 }

然后这是来自 Welcome_backViewController.m:

#import "Welcome_backViewController.h"
#import "Welcome_backView.h"

@interface Welcome_backViewController()
-(void) arrangeViews;
@end

@implementation Welcome_backViewController

UIView *welcome_backView;

 - (id)init {

welcome_backView = [[Welcome_backView alloc] initWithParentViewController:self];
    self.view = welcome_backView;
}

-(void) arrangeViews {
//if one thing
    [welcome_backView setSubviewsToPortrait];
//if another thing
    [welcome_backView setSubviewsToLandscape];
}

而且,像许多海报一样,我收到警告“UIView”可能不会响应“-setSubviewsToLandscape”(以及纵向......相同的警告)。我已经尝试了所有常见的怀疑 - 方法的拼写错误,使用类而不是实例,没有导入标题或忘记将方法声明放在标题中。

事实是,代码似乎工作正常......

谁能看到我做错了什么(我可以摆脱警告)吗?

4

1 回答 1

0

警告是说“UIView 可能没有响应......”因为您已将 welcome_backView ivar 声明为 UIVIew 而不是它的子类。

UIView 没有 setSubviewsToXXX 方法——你的子类有。

改变这个:

UIView *welcome_backView;

对此:

Welcome_backView *welcome_backView;

它甚至在声明为 UIView 时也能工作,因为在运行时,ivar 确实指向 Welcome_backView 的一个实例,该实例响应 setSubviewsToXXX 方法。

(还)没有引起问题的另一件事是方法的名称。以“set”开头的方法名称通常用于属性设置方法,以后可能会引起混淆。

于 2010-11-09T16:56:05.780 回答