【问题标题】:calling a void method from another class从另一个类调用 void 方法
【发布时间】:2012-08-03 15:23:56
【问题描述】:

我有两个班级:MainClassSecondClass。我已将 SecondClass.H 导入到 MainClass.m 以使用其中的一些方法。我可以调用具有双重类型输入的方法,但我不能(或不知道如何)调用没有(或 void 类型)输入的方法。 我可以通过命令调用double类型的方法:[self.second someMethod2: type double];我曾尝试使用[self.second someMethod1];调用void输入法,但不起作用。

我在不同的类中有这两种方法。

-(void)pushOperand:(double)operand {

NSNumber *operandObject = [NSNumber numberWithDouble:operand];

[self.operandStack addObject:operandObject];

}

-(double)popOperand {

NSNumber *operandObject = [self.operandStack lastObject];
if( operandObject ) [self.operandStack removeLastObject];
return [operandObject doubleValue];

}

我可以使用第一种方法

[self.brain pushOperand:[self.display.text doubleValue]];

但是 xcode 甚至找不到第二种方法。我试过了

[self.brain popOperand];, [self.brain popOperand];, ...

【问题讨论】:

  • 应该有效。你遇到了什么错误?
  • 拜托,告诉我你不是想写这个!
  • 错误是什么?你的代码看起来不错。
  • Xcode 只是看不到方法。 “SecondClass 没有可见的@interface 声明扇区 someMethod1”
  • 是的,我正在使用情节提要...有问题吗?

标签: objective-c xcode xcode4.3


【解决方案1】:

假设您有两个类,ClassA 和 ClassB。

重要提示,在ClassA的接口文件中,takeNothingAndReturnNothing必须声明为-(void)takeNothingAndReturnNothing;这样的原型,这样才能公开

ClassA 中有一个名为takeNothingAndReturnNothing 的实例方法(名称表明该方法是无效的),方法声明如下所示

-(void)takeNothingAndReturnNothing{
   NSLog("this is %s from ClassA",  __FUNCTION__);
}

ClassB(导入ClassA之后)首先创建一个ClassA的对象,然后像下面这样调用它的实例方法..

ClassA *theObject=[[ClassA alloc]init];
[theObject takeNothingAndReturnNothing];

【讨论】:

  • 这似乎就是我所拥有的......我将分部分发布我的代码。我在不同的类中有这两种方法 - (void)pushOperand:(double)operand { NSNumber *operandObject = [NSNumber numberWithDouble:operand]; [self.operandStack addObject:operandObject]; } - (double)popOperand { NSNumber *operandObject = [self.operandStack lastObject]; if(operandObject) [self.operandStack removeLastObject];返回[操作对象双值]; }
  • 唯一的问题是,当他编写故事板时,他需要跨两个 VC 的有效引用,这意味着将 NSObject 拖到故事板文件中......呃,反模式让我感到寒意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
相关资源
最近更新 更多