返回一个数组的基本Objective C类

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

我知道这个可能有些问题,但请温柔一点,因为我正在努力学习 :)


类不返回东西,方法返回。而且你不能分配方法。 - Hot Licks
1
你需要回去找一个好的关于“对象”是什么的描述并学习它。 - Hot Licks
感谢你的建设性批评和帮助。 - user499846
相信我——花几个小时理解对象的基本概念会对你有很大好处。 - Hot Licks
3个回答

4
调用应该是这样的:
- (void)viewDidLoad
{
    [super viewDidLoad];
    ReturnClass *retClass = [[ReturnClass alloc] init];
    NSMutableArray *latLngArray = [retClass getLocation];
}

这会给你getLocation产生的数组。
每次需要数组时,此代码都会创建一个新的ReturnClass实例;这可能是您想要的,也可能不是,因为您无法在调用之间保留任何状态。如果需要在ReturnClass中保持状态,则必须实现一个singleton(这里是一个链接到一个问题,解释了一种在Objective C中实现单例的非常好的方法)。

啊,这样更有意义,我需要在调用方法之前实例化 - 谢谢! - user499846

1

您应该先了解面向对象编程的概念,特别是不要混淆类和方法。

在您的代码中,您需要先实例化一个ReturnClass实例才能调用其方法getLocation


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

首先,这行代码有误。你正在将+alloc发送到一个方法的名称上。你应该将该消息发送给一个类,像这样:
ReturnClass *myObject = [[ReturnClass alloc] init];

然后向生成的对象发送消息,就像这样:

NSMutableArray *latLngArray = [myObject getLocation];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接