我是objective-c的绝对初学者,只是阅读了cocoadevcentral语言的概述。
第一部分简要讨论了调用方法的语法,并给出了两个例子;一个用于调用对象上的方法,第二个是在对象上调用输入的方法,
[object method];
[object methodWithInput: input];
任何人都可以用一个简单的例子来解释我的不同之处吗?
答案 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];
这种方法有两个部分。
object
这是一个类的实例,或者是一个类本身都取决于您调用的方法的类型,无论它是实例方法还是<强>类方法。每个都以不同的方式声明。
类方法声明为+ (void)myClassMethod;
,并且会被调用为[NSString myClassMethod];
实例方法将被声明为- (void)myInstanceMethod;
,并且会被调用为[myStr myInstanceMethod];
(其中myStr
是NSString
的实例})
method
第二部分是您调用此实际方法,当您调用类似[myStr myInstanceMethod];
之类的内容时,它会调用该方法的实现,以便调用
- (void)myInstanceMethod
{
NSLog(@"We called our instance method");
}
方法2
[object methodWithInput: input];
这里唯一的区别是我们正在传递一个论点。所以这里我们有三个部分,前两个来自方法1 和参数
input
所有这些,是您传入要在其中使用的方法的值。这种类型的方法将被声明为- (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。最好的学习外观,因为它可能不是最容易学习的语言。