1

可能重复:
Objective-C 中的方法语法

我刚开始学习Objective-C,我对这个说法有点困惑。

+(NSMutableArray *) array;

这是我的理解:

  1. +表示这是一个响应类的方法(这使它成为静态方法)

  2. NSMutableArray是一个可以改变大小的数组

  3. *指针(内存位置参考)

  4. array是 NSMutableArray 类型的数组的名称。

  5. ()为什么这个方法需要在对象指针'(NSMutableArray *)'周围加上括号

我不知道如何概念化这些部分作为一个整体的含义。你能给我解释一下吗?

4

2 回答 2

2

在 C 语法中,这将被写为:

static NSMutableArray *array();

NSMutableArray *是返回类型。array是方法的名称。没有论据,但如果有的话会是这样的:

+ (ReturnType)methodName:(ArgType)argName;

或者如果有多个参数:

+ (ReturnType)firstPartOfMethodName:(Arg1Type)arg1Name secondPartOfMethodName:(Arg2Type)arg2Name;

对于很多 Obj-C 新手来说,这可能是一个困惑点。方法名称在参数之间分开的事实对于大多数来自其他语言的程序员来说可能非常混乱。

以这种方式排序的原因是为了使论点清晰。使用以下方法时:

- (id)initWithBitmapDataPlanes:(unsigned char **)planes 
                pixelsWide:(NSInteger)width 
                pixelsHigh:(NSInteger)height 
             bitsPerSample:(NSInteger)bps 
           samplesPerPixel:(NSInteger)spp 
                  hasAlpha:(BOOL)alpha
                  isPlanar:(BOOL)isPlanar 
            colorSpaceName:(NSString *)colorSpaceName
              bitmapFormat:(NSBitmapFormat)bitmapFormat 
               bytesPerRow:(NSInteger)rowBytes
              bitsPerPixel:(NSInteger)pixelBits

(这是来自 Cocoa 框架的真实方法,以最长而闻名),知道将哪个参数放在第一位、第二位、第三位等非常有帮助。

于 2012-07-07T06:11:48.313 回答
1

1,2,3 陈述是正确的。但第四个是,array是方法的名称。第五个是,array方法的返回类型是NSMutableArray *.

最后array是类方法,它有NSMutableArray *返回类型,也没有任何参数。

它看起来像- (void)viewDidLoadviewDidLoad是实例方法,它有void返回类型,也没有任何参数。

于 2012-07-07T06:00:06.060 回答