Obj-C:在对象上调用方法(没有输入)与使用输入调用方法之间的区别

时间:2014-10-06 14:26:00

标签: objective-c methods

我是objective-c的绝对初学者,只是阅读了cocoadevcentral语言的概述。

第一部分简要讨论了调用方法的语法,并给出了两个例子;一个用于调用对象上的方法,第二个是在对象上调用输入的方法,

[object method];
[object methodWithInput: input];

任何人都可以用一个简单的例子来解释我的不同之处吗?

4 个答案:

答案 0 :(得分:1)

当您在没有输入数据的情况下调用方法时,这意味着该方法将适用于已存在的类的属性。

- (void)someMethod {
    self.var_1 = self.var_2 + self.var_3; //or any other implementation
}

您将像这样调用此方法

[self someMethod];

当您使用某些输入数据调用方法时,意味着此数据将用于方法的实现

- (void)someMethodWithInputData:(NSInteger)inputData {
    self.var_1 = self.var_2 * inputData;
}

你会这样称呼它

[self someMethodWithInputData:10];

答案 1 :(得分:1)

尝试用'input'代替'参数'.. [object someMethod:(CGFloat)floatArgument];

类型应该在括号中,带有解除引用运算符(*)例如(NSObject *)theArgument如果该参数是指针。

所以基本上一些方法提供一个或多个参数,有些方法不提供,就像C

一样

答案 2 :(得分:1)

这就是说“我等”和“我吃煎蛋”之间的区别。在某些情况下,你可以用动词说出你的意思。在某些情况下,句子需要一个对象才能传达其含义。

同样的事情适用于编程。有时你需要指定的不仅仅是动作。但并非总是如此。

答案 3 :(得分:1)

两者之间没有太大的区别,所有这些都取决于你在做什么。

方法1

[object method];

这种方法有两个部分。

  1. object这是一个类的实例,或者是一个类本身都取决于您调用的方法的类型,无论它是实例方法还是<强>类方法。每个都以不同的方式声明。

    • 类方法声明为+ (void)myClassMethod;,并且会被调用为[NSString myClassMethod];

    • 实例方法将被声明为- (void)myInstanceMethod;,并且会被调用为[myStr myInstanceMethod];(其中myStrNSString的实例})

  2. method第二部分是您调用此实际方法,当您调用类似[myStr myInstanceMethod];之类的内容时,它会调用该方法的实现,以便调用

    - (void)myInstanceMethod
    {
         NSLog(@"We called our instance method");
    }
    
  3. 方法2

    [object methodWithInput: input];
    

    这里唯一的区别是我们正在传递一个论点。所以这里我们有三个部分,前两个来自方法1 和参数

    1. input所有这些,是您传入要在其中使用的方法的值。
    2. 这种类型的方法将被声明为- (void)myInstanceMethodWithArgument:(NSString *)str;。这里只是说我们有NSString类型的参数,所以当我们将它称为[str myInstanceMethod:@"Some Random String I want to pass in"];时,它将运行以下实现代码

          - (void)myInstanceMethod:(NSString *)str
          {
              NSLog(@"My str value is : %@", str);
          }
      

      方法3

      [object methodWithInput1:input1 andInput2:input2];
      

      只是因为你在处理多个参数时我有点困惑而把它扔进去。这与方法2 完全相同,除了它有两个参数而不是一个。这将被声明为- (void)myInstanceMethodWithInput1:(NSString *)str1 andInput2:(NSString *)str2;。完全相同的是方法2 ,除了它有多个参数,它没有什么值得害怕的。

      我建议您阅读Apple Coding Guidelines for Cocoa。最好的学习外观,因为它可能不是最容易学习的语言。