关于iphone:对Objective c语法感到困惑

confused about Objective c syntax

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Method Syntax in Objective C

我刚开始学习目标C,对这句话有点困惑。

1
+(NSMutableArray *) array;

这就是我理解的:

  • +意味着这是一个响应类的方法(这使得它成为一个静态方法)

  • NSMutableArray是一个可以改变其大小的数组。

  • *指针(内存位置引用)

  • array是NSmutableArray类型的数组的名称。

  • ()为什么这个方法需要在对象指针'(nsmutableArray*)周围加括号?

  • 我不知道如何概念化这些部分作为一个整体意味着什么。你能给我解释一下吗?


    在C语法中,这将写为:

    1
    static NSMutableArray *array();

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

    1
    + (ReturnType)methodName:(ArgType)argName;

    或者如果有多个参数:

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

    对于许多obj-c新来者来说,这可能是一个困惑点。对于来自其他语言的大多数程序员来说,方法名在参数之间被拆分的事实可能会非常令人困惑。

    按这种方式排列的原因是为了澄清这些论点。使用以下方法时:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    - (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框架的一个真正的方法,以最长的方式而闻名),知道将哪个论点放在第一、第二、第三等位置非常有用。


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

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

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