1

我正在从视图控制器类调用方法到目标 c 'dbhelper' 类,反之亦然。当我从视图控制器类调用 dbhelper 类的方法时。像这样我在视图控制器中为按钮创建了一个方法,在这个方法中我像这样调用 dbhelper 类

- (IBAction) clickme 
{
dbhelper *dbhelp = [[dbhelper alloc] init];
[dbhelp dbhelperclassmethod];
}

它工作正常但是当我从 dbhelper 类调用视图控制器类的方法时,方法调用不能像这样工作我已经在 dbhelper 类中创建了方法,我从那里调用 viewcontroller 类方法

  -(void) disableview
    {
       ViewController *Controller = [[ViewController alloc] init];
        [Controller ViewControllerclassmethod];

  }

所以这个方法不调用viewcontroller类方法,上面的代码不是原始代码,但我写这个代码是为了你的理解,这样你就可以回答我是什么问题。所以请告诉我为什么我不能调用viewcontroller来自 dbhelper 的课程谢谢

4

1 回答 1

2

在我看来,您正在类中创建一个新实例ViewControllerdbhelper并将其发送ViewControllerclassmethod到该新实例,而不是您期望的实例。如果你想让你的实例在你调用的实例中调用dbhelper方法,那么你必须告诉在哪里发送消息。就像是:ViewControllerdbhelperdbhelper

dbhelp.callingViewController = self;

在您的 ViewController 实例中。然后dbhelper可以做

[self.callingViewController ViewControllerclassmethod];

当然,在 中dbhelper.h,必须有一个

@property (strong) ViewController * callingViewController;

Controller您在上面的方法中所指的是disableview一个全新的 ViewController,与调用dbhelper.

另一个提示:关于目标 C 中的命名约定实际上非常有用。您调用的类dbhelper最好称为DatabaseHelper(大写“D”),而局部变量Controller最好称为controller. 其他人,很快你,会发现更容易遵循你的代码。同样,disableViewand viewControllerInstanceMethod(而不是类方法,这是完全不同的事情)。

于 2012-12-05T22:19:19.683 回答