困惑于Objective c语法

时间:2012-07-07 05:45:53

标签: iphone objective-c syntax

  

可能重复:
  Method Syntax in Objective C

我刚刚开始学习目标C而且我对这个陈述感到有点困惑。

+(NSMutableArray *) array;

这就是我的理解:

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

  2. NSMutableArray是一个可以更改尺寸的数组

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

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

  5. ()为什么这个方法需要围绕对象指针的括号'(NSMutableArray *)'

  6. 我不知道如何概念化这些部分的整体意义。你能解释一下吗?

2 个答案:

答案 0 :(得分: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框架的真正方法,以longest而闻名),你知道哪个参数放在第一,第二,第三等位置是非常有用的。

答案 1 :(得分:1)

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

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

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