Cra*_*aig 176 methods syntax objective-c
有人可以为我解释这个方法声明语法吗?在此函数中,返回UIPickerView(iPhone上的老虎机UI)的行数.根据我的理解,Method被称为' pickerView',并返回一个NSInteger.  
它传入一个指向UIPickerview的指针,称为' pickerView'...首先,为什么该方法与参数名称相同?  
接下来有一个名为component的NSInteger参数,它告诉我们计算行的哪个组件.决定哪个是在方法体内的逻辑.
什么是' numberOfRowsInComponent?它似乎描述了我们返回的值,但它位于参数的中间.  
- (NSInteger) pickerView:(UIPickerView *)pickerView 
 numberOfRowsInComponent:(NSInteger)component
{
    if (component == kStateComponent)
        return [self.states count];
    return[self.zips count];
}
loc*_*ani 356
Objective-C方法旨在自我记录,并借鉴了Smalltalk的丰富传统.
我会试着解释一下你在这里有什么-(NSInteger) pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component.
- (NSInteger)
第一部分表明这是一个返回NSInteger对象的Objective C 实例方法.的-(短划线)表示这是一个实例的方法,其中+将指示这是一种类方法.括号中的第一个值是方法的返回类型.  
pickerView:
此部分是消息名称的一部分.在这种情况下,完整的消息名称是pickerView:numberOfRowsInComponent:.Objective-C运行时获取此方法信息并将其发送到指示的接收器.在纯C中,这看起来像
NSInteger pickerView(UIPickerView* pickerView, NSInteger component).但是,由于这是Objective-C,因此其他信息将打包到消息名称中.  
(UIPickerView*)pickerView
这部分是输入的一部分.这里的输入是类型的,UIPickerView*并且具有pickerView的局部变量名.  
numberOfRowsInComponent:
此部分是消息名称的第二部分.正如您在此处所看到的,消息名称被拆分以帮助指示您传递给接收器的信息.因此,如果我使用变量foo和bar向对象myObject发送消息,我会输入:
[myObject pickerView:foo numberOfRowsInComponent:bar];
而不是C++样式:
myObject.pickerView(foo, bar);.
(NSInteger)component
这是输入的最后一部分.这里的输入是类型,NSInteger并具有组件的局部变量名称.
e.J*_*mes 52
在Objective-C中,方法的名称由声明中不是参数和类型的所有部分组成.因此,此方法的名称为:
pickerView:numberOfRowsInComponent:
该方法等同于C风格的函数,如下所示:
编辑:(感谢Jarret Hardie):
NSInteger pickerViewNumberOfRowsInComponent(UIPickerView * pickerView, NSInteger component)
Kar*_*lis 29
添加到之前的答案,我只想说Objective-C方法(或者如果您愿意的话,还有消息)具有外部和内部参数名称.
所以在这种情况下:
- (NSInteger) pickerView:(UIPickerView *)pickerView 
 numberOfRowsInComponent:(NSInteger)component
numberOfRowsInComponent是外部名称,从外部调用此方法时将使用的名称.
并且component是参数的内部名称,用于从方法内部引用参数.
希望能稍微清理一下.
wil*_*arz 21
在我看来,Objective-C方法签名更像是句子.每个参数都值得方法名称的一部分.例如,在C中我们可以有一个方法(setPersonData)来设置一些关于人的信息:
void setPersonData( char* name, int age, float height ) {
在Objective-C中,该方法将更具描述性(setPersonName:andAge:andHeight :),就像
- (void) setPersonName: (char *)name andAge:(int)age andHeight:(float)height {
| 归档时间: | 
 | 
| 查看次数: | 94524 次 | 
| 最近记录: |