Objective c 我不能调用这个方法

Objective c 我不能调用这个方法,objective-c,Objective C,我在ViewController中有一个方法。h: - (void)setbannerVisible:(short int)vise; 在ViewController.m中 - (void)setbannerVisible:(short int)vise { if (vise == 1) { [_adView setAlpha:1]; NSLog(@"Show"); } else { [_adView setAlpha:0];

我在ViewController中有一个方法。h:

- (void)setbannerVisible:(short int)vise;
在ViewController.m中

- (void)setbannerVisible:(short int)vise
{
    if (vise == 1) {
        [_adView setAlpha:1];
        NSLog(@"Show");
    } else {
        [_adView setAlpha:0];
        NSLog(@"Hide");
   }
}
但当我在其他班级写作时:

ViewController *object = [[ViewController alloc] init];
[object setbannerVisible:0];
什么也没发生

我创建了adView:

- (void)viewDidLoad
{
    _adView = [[ADBannerView alloc] initWithFrame:CGRectZero];
    _adView.frame = CGRectOffset(_adView.frame, 0, 0);
    [self.view addSubview:_adView];
    _adView.delegate=self;

    [super viewDidLoad];
}

当您的应用程序运行此行时:

ViewController *object = [[ViewController alloc] init];
将创建一个新的ViewController实例。这个实例没有连接到任何东西,在您调用BannerVisible:on之后,它会被销毁

您需要更改代码,以便它获取ViewController的现有实例,该实例实际上在屏幕上有一个视图,并调用该实例上的方法。如何执行此操作取决于此代码所在的位置以及ViewController实例的创建方式及其视图的显示方式


旁白:方法名称应以小写字母bannerVisible开头,并应命名以描述它们所做的操作setBannerVisibility:。

Dude,哇,首先,方法名称应以小写字母开头,不会命名实例对象,尤其是在没有意义的情况下,viewController如何?。还有,为什么是短int?看起来你想在那里喝一杯。在.h文件中显示声明。您希望发生什么事情而没有发生?在哪里创建_adView?有这样一种数据类型bool,其参数为true和false。或者,如果您想让它更现代,可以使用布尔值及其常量YES和NO。无论如何,这不是您的问题。通常的命名方法是先用小写字母。再说一次,这不是你的问题,但有助于在类似这样的论坛中进行交流。你希望你的建议有什么样的框架。如果我没弄错的话,你会得到0,-50,0,0。这是一个没有高度和宽度的矩形,它至少以50像素的速度离开屏幕或其超视距。啊,韦恩是对的。在另一个类中,您无法通过分配新的ViewController来获取这个ViewController。您将以某种方式维护对它的引用,并将原始ViewController对象存储在其中。出于其他原因,我不喜欢在我的应用程序中有很多建议。我认为如果其中一些被覆盖,而只有一个是可见的,那是不好的。对于iAdView,并且仅对于这个视图,我使用了一个带有延迟实例的单例模式。然后,显示广告的所有视图控制器都会共享此单例。每次使用它的视图出现时,都必须将其添加为子视图。我不太明白如何执行此操作。您需要说明屏幕上的ViewController实例是如何创建和显示的。。。