链接器命令失败,退出代码为1(React native - ios)

时间:2016-06-12 16:59:32

标签: objective-c xcode react-native

我跟随iOS MapView example

我在Project / ProjectFolder / RCTMapManager.m中创建了一个新的Objective-C .m文件,并添加了以下代码:

// RCTMapManager.m
#import <MapKit/MapKit.h>

#import "RCTViewManager.h"

@interface RCTMapManager : RCTViewManager
@end

@implementation RCTMapManager

RCT_EXPORT_MODULE()

- (UIView *)view
{
  return [[MKMapView alloc] init];
}

@end

然后我打开了atom并在components / MapView.js中创建了一个js文件并添加了以下代码:

// MapView.js

import { requireNativeComponent } from 'react-native';

// requireNativeComponent automatically resolves this to "RCTMapManager"
module.exports = requireNativeComponent('RCTMap', null);

在Xcode中运行build命令以重建我以前工作的项目,并且构建失败并显示错误消息:

enter image description here

然后我在MapView.js中注释掉了所有内容,并在RCTMapManager.m中注释掉了实现。

这将构建:

// RCTMapManager.m
#import <MapKit/MapKit.h>

#import "RCTViewManager.h"

@interface RCTMapManager : RCTViewManager
@end

但是一旦我添加了实现,它就会失败并且&#34;链接器命令失败,退出代码为1&#34;:

// RCTMapManager.m
#import <MapKit/MapKit.h>

#import "RCTViewManager.h"

@interface RCTMapManager : RCTViewManager
@end

@implementation RCTMapManager

RCT_EXPORT_MODULE()

- (UIView *)view
{
  return [[MKMapView alloc] init];
}

@end

我想知道为什么实施会导致失败,以及如何修复它?

1 个答案:

答案 0 :(得分:1)

RCTMapManager已经在react-native中定义。我想文档中的示例是在添加到库之前编写的。

如果您只想使用地图,请查看MapView

但是,如果要试验自定义本机组件,请更改您使用的类名。在Objective-C中,类名传统上以三个字母为前缀,用于描述您的公司或项目(这是RCT的来源)。