【问题标题】:Calling Obj-C Methods调用 Obj-C 方法
【发布时间】:2014-04-05 16:43:10
【问题描述】:

我想使用不同的方法A调用方法B。问题是方法B的aksed参数在方法A中不存在。 这是我尝试过的..

-(void) methodA {

     // some code

    CGSize *size = [CGSizeMake(self.frame.size.width, self.frame.size.height)];

    [self methodB:size];
}

-(void) methodB:(CGSize) size {

    //some code
}

肯定有更好的方法...

谢谢

【问题讨论】:

    标签: objective-c methods


    【解决方案1】:

    我认为您的代码不会被编译。

    CGSize 不是一个对象。 重构为:

    CGSize size = CGSizeMake(self.frame.size.width, self.frame.size.height);
    [self methodB:size];
    

    【讨论】:

    • 好的 .. 到目前为止,这有效,但是(方法 b 定位一些精灵)精灵定位在 0、0 而不是选定的位置。这可能是什么原因?
    • 你应该再分享一些代码,或者就这个问题提出另一个问题。
    【解决方案2】:

    您应该只将 [] 包裹在方法周围。 CGSizeMake(self.frame.size.width, self.frame.size.height) 是一个函数,而不是一个方法,所以去掉方括号。你可以说它是一个函数,因为函数看起来像 functionName(argument1, argument2, ...) 而方法看起来像 [object methodName:argument1 methondNameContinued:argument2]

    此外,CGSizeMake 返回一个CGSize 结构,而不是指向CGSize 结构的指针,所以在*size 中删除*

    那么你就剩下这个了:

    CGSize size = CGSizeMake(self.frame.size.width, self.frame.size.height);
    [self methodB:size];
    

    哪个是正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      • 2018-03-16
      • 1970-01-01
      相关资源
      最近更新 更多