我在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命令以重建我以前工作的项目,并且构建失败并显示错误消息:
然后我在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
我想知道为什么实施会导致失败,以及如何修复它?
答案 0 :(得分:1)
RCTMapManager已经在react-native中定义。我想文档中的示例是在添加到库之前编写的。
如果您只想使用地图,请查看MapView。
但是,如果要试验自定义本机组件,请更改您使用的类名。在Objective-C中,类名传统上以三个字母为前缀,用于描述您的公司或项目(这是RCT的来源)。