问题描述
有人可以为我解释这个方法声明语法吗?在这个函数中,返回的是一个 UIPickerView(iPhone 上的老虎机 UI)的行数.根据我的理解,该方法称为pickerView
",并返回一个 NSInteger.
Can someone explain this method declaration syntax for me? In this function, the number of rows of a UIPickerView (slot machine UI on the iPhone) is being returned. From my understanding, the Method is called 'pickerView
', and returns an NSInteger.
它传入一个指向名为pickerView
"的 UIPickerview 的指针……首先,为什么该方法与参数名称相同?
It passes in a pointer to the UIPickerview called 'pickerView
' ... first, why is the method called the same name as the parameter?
接下来有一个名为 component 的 NSInteger 参数,它告诉我们我们正在为哪个组件计算行数.决定哪个在方法体中的逻辑.
Next there is NSInteger parameter called component that tells us which component we are counting the rows for. The logic to decide which is in the body of the method.
什么是numberOfRowsInComponent
?它似乎描述了我们返回的值,但它在参数的中间.
What is 'numberOfRowsInComponent
? It seems to describe the value we are returning, but it is in the middle of the parameters.
- (NSInteger) pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
if (component == kStateComponent)
return [self.states count];
return[self.zips count];
}
推荐答案
Objective-C 方法被设计为自文档化,它们借鉴了 Smalltalk 的丰富传统.
Objective-C methods are designed to be self documenting, and they borrow from the rich tradition of Smalltalk.
我会试着解释你在这里有什么,-(NSInteger) pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component
.
I'll try to explain what you have here, -(NSInteger) pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component
.
- (NSInteger)
第一部分表明这是一个返回 NSInteger 对象的 Objective C 实例方法.-
(破折号)表示这是一个实例方法,其中+
表示这是一个类 方法.括号中的第一个值是方法的返回类型.
- (NSInteger)
This first portion indicates that this is an Objective C instance method that returns a NSInteger object. the-
(dash) indicates that this is an instance method, where a+
would indicate that this is a class method. The first value in parenthesis is the return type of the method.
pickerView:
这部分是消息名称的一部分.在这种情况下,完整的消息名称是 pickerView:numberOfRowsInComponent:
.Objective-C 运行时获取此方法信息并将其发送到指定的接收器.在纯 C 中,这看起来像NSInteger pickerView(UIPickerView* pickerView, NSInteger 组件)
.然而,由于这是 Objective-C,附加信息被打包到消息名称中.
pickerView:
This portion is a part of the message name. The full message name in this case is pickerView:numberOfRowsInComponent:
. The Objective-C runtime takes this method information and sends it to the indicated receiver. In pure C, this would look likeNSInteger pickerView(UIPickerView* pickerView, NSInteger component)
. However, since this is Objective-C, additional information is packed into the message name.
(UIPickerView*)pickerView
这部分是输入的一部分.这里的输入是 UIPickerView*
类型,并且有一个局部变量名pickerView.
(UIPickerView*)pickerView
This portion is part of the input. The input here is of type UIPickerView*
and has a local variable name of pickerView.
numberOfRowsInComponent:
这部分是消息名称的第二部分.正如您在此处看到的,消息名称被拆分以帮助指示您将哪些信息传递给接收者.因此,如果我要使用变量 foo 和 bar 向对象 myObject 发送消息,我会输入:[myObject pickerView:foo numberOfRowsInComponent:bar];
与 C++ 风格相反:myObject.pickerView(foo, bar);
.
numberOfRowsInComponent:
This portion is the second part of the message name. As you can see here, message names are split up to help indicate what information you are passing to the receiver. Thus, if I were to message an object myObject with the variables foo and bar, I would type:[myObject pickerView:foo numberOfRowsInComponent:bar];
as opposed to C++ style:myObject.pickerView(foo, bar);
.
(NSInteger)component
这是输入的最后一部分.这里的输入是 NSInteger
类型,并且有一个组件的局部变量名.
(NSInteger)component
This is the last portion of the input. the input here is of type NSInteger
and has a local variable name of component.
这篇关于Objective-C 中的方法语法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!