为什么不能每行声明多个方法原型?

时间:2013-04-05 16:53:23

标签: objective-c c methods syntax prototype

鉴于......

@interface Hog : NSObject { NSUInteger one, two, three;      }
@property (strong, nonatomic) NSString *four, *five, *six;
-(void) seven;
@end
@implementation Hog
static CGFloat f, ff, fff;
- (NSString*) six { return _four = _five = _six  =  @"sexy"; }
- (void) seven    {          one =   two = three =       33;
                               f =    ff =   fff =     6.66;
                         SEL sevenSelect = @selector(seven);
   NSLog(@" %ld, %0.2f, %@, %@",
   three, fff, self.six, NSStringFromSelector(sevenSelect)); }
@end
int main(int argc,char *argv[]){ Hog *u = Hog.new; [u seven];}

Output: 33, 6.66, sexy, seven 

然后..为什么不可能宣布

-(void)seven, eight, nine;

标题中的

等?有什么不同? objc-c是否仅仅处理IMP或其他任何内容,与其他任何变量,块等相同?无论如何,为什么还要打扰原型呢?特别是,为什么要在类扩展中烦恼,而你只是直接在下面编写方法。这似乎只是错误和不必要的重复的另一个机会,不是吗?我知道我错了,但我要求接受教育,所以请继续。

1 个答案:

答案 0 :(得分:2)

方法声明在语法上与变量声明不同。它们具有不同的语法,只能出现在特定的上下文中。

是否可以修改Objective-C的语法以允许用逗号分隔多个变量声明?是的,它会 - 但它需要比你想象的更大的变化,因为声明在包含参数时会变得更加复杂。而进行重大的语法更改只是为了让人们编写不太可读的声明。实际上没有任何好处。