3

私はObjective Cを初めて使用し、いくつかの基本的な概念を試していますが、いくつかの壁にぶつかっています

基本的に私がやろうとしているのは、別のクラスからメッセージが送信されたときに配列を返すクラスを作成することです

値を返すクラスは次のようになります-

ReturnClass.h

#import <Foundation/Foundation.h>

@interface ReturnClass : NSObject {

}


-(NSMutableArray *) getLocation ;


@end

ReturnClass.m

    #import "ReturnClass.h"

    @implementation ReturnClass

    -(NSMutableArray *) getLocation {
   //do some stuff to populate array
    //return it
        return  latLngArray;
    }
    @end

次に、値を取得するために、これを別の実装に呼び出したいと思いました

SomeOtherClass.m

#import "ViewController.h"
#import "ReturnClass.h"

@interface ViewController ()

@end
@implementation ViewController
- (void)viewDidLoad
{
    [super viewDidLoad];
NSMutableArray *latLngArray = [[getLocation alloc] init];
}

これにはおそらくかなりの間違いがあると思いますが、私は学ぼうとしているので優しくしてください:)

4

3 に答える 3

4

呼び出しは次のようになります。

- (void)viewDidLoad
{
    [super viewDidLoad];
    ReturnClass *retClass = [[ReturnClass alloc] init];
    NSMutableArray *latLngArray = [retClass getLocation];
}

これにより、 によって生成された配列が得られますgetLocation

ReturnClassこのコードは、配列が必要になるたびにの新しいインスタンスを作成します。呼び出し間で状態を保持できないため、これはあなたが望むものかもしれませんし、そうでないかもしれません。状態を維持するReturnClassことが必要な場合は、シングルトンを実装する必要があります( Objective C でシングルトンを実装する非常に良い方法を説明する質問へのリンクです)。

于 2013-04-17T14:48:49.650 に答える
1

一般的なオブジェクト指向プログラミングの概念を確認する必要があります。特に、クラスとメソッドを混同しないでください。

コードでは、ReturnClass最初にインスタンスをインスタンス化して、そのメソッドを呼び出せるようにする必要がありますgetLocation

于 2013-04-17T14:50:11.430 に答える
0
NSMutableArray *latLngArray = [[getLocation alloc] init];

まず、この行は的を射ていません。+allocメソッドの名前に送信しています。次のように、そのメッセージをクラスに送信する必要があります。

ReturnClass *myObject = [[ReturnClass alloc] init];

次のように、結果のオブジェクトにメッセージを送信します。

NSMutableArray *latLngArray = [myObject getLocation];
于 2013-04-17T14:51:17.430 に答える