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フレームワークの実際のメソッドです)、1番目、2番目、3番目などに配置する引数を知っておくと非常に役立ちます。

于 2012-07-07T06:11:48.313 に答える
1

1、2、3 のステートメントは正しいです。でも4つ目は、arrayメソッドの名前です。array5 つ目は、メソッドの戻り値の型はですNSMutableArray *

最後arrayはクラスメソッドで、NSMutableArray *戻り値の型があり、引数もありません。

のように見えます- (void)viewDidLoadviewDidLoadはインスタンス メソッドであり、void戻り値の型があり、引数もありません。

于 2012-07-07T06:00:06.060 に答える