我是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];
}
我很欣赏这可能有点错误但请在我努力学习时保持温和:)
答案 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];