3

我是Objective C的新手,正在尝试一些基本概念,但遇到了几堵砖墙

基本上我想做的是编写一个类,当从另一个类发送消息时返回一个数组

返回值的类将类似于 -

返回类.h

#import <Foundation/Foundation.h>

@interface ReturnClass : NSObject {

}


-(NSMutableArray *) getLocation ;


@end

返回类.m

    #import "ReturnClass.h"

    @implementation ReturnClass

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

然后我想将其调用到另一个实现中以获取价值

其他类.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 回答