基本目标C类返回一个数组

时间:2013-04-17 14:44:05

标签: objective-c

我是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];
}

我很欣赏这可能有点错误但请在我努力学习时保持温和:)

3 个答案:

答案 0 :(得分:4)

电话会像这样说出来:

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

这将为您提供由getLocation生成的数组。

此代码每次需要数组时都会生成ReturnClass的新实例;这可能是也可能不是你想要的,因为你不能在调用之间保持任何状态。如果在ReturnClass中保持状态是您所需要的,则必须实现单例(这里是一个link to a question,解释了在Objective C中实现单例的一种非常好的方法)。

答案 1 :(得分:1)

您应该检查一般的面向对象编程的概念。特别是,不要将类与方法混淆。

在您的代码中,您必须首先实例化ReturnClass实例才能调用其方法getLocation

答案 2 :(得分:0)

NSMutableArray *latLngArray = [[getLocation alloc] init];

首先,这条线错过了标记。您正在向方法名称发送+alloc。您应该将该消息发送给类,如下所示:

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

然后将消息发送到生成的对象,如下所示:

NSMutableArray *latLngArray = [myObject getLocation];