我在单独的头文件中编写了自定义结构。看起来像这样
typedef struct RequestSpecifics {
BOOL includeMetaData;
BOOL includeVerboseData;
} RequestSpecifics;
现在我想创建一个自定义的“make”方法,类似于 CoreLocation 结构 CLLocationCoordinate2 CLLocationCoordinate2DMake
方法。
我尝试了两种不同的方法。虽然这两种方法都不会在 .h 文件中出现错误,但当我想使用 make 方法时确实会出错。
方法一:
extern RequestSpecifics RequestSpecificsMake(BOOL includeMetaData, BOOL includeVerboseData);
抛出:
Apple Mach-O Linker
"_RequestSpecificsMake", referenced from:
Error Linker command failed with exit code 1 (use -v to see invocation)
方法二:
extern RequestSpecifics RequestSpecificsMake(BOOL includeMetaData, BOOL includeVerboseData) {
RequestSpecifics specifics;
specifics.includeMetaData = includeMetaData;
specifics.includeVerboseData = includeVerboseData;
return specifics;
}
抛出:
Apple Mach-O Linker
Error Linker command failed with exit code 1 (use -v to see invocation)
使用示例:
RequestSpecificsMake(NO, NO)
我检查了所有 common solutions对于 Apple Macho-Linker 错误,但似乎没有任何效果或解决方案不相关。
那么我该如何正确实现结构的“make”方法呢?
最佳答案
显然方法 2 应该是实现,它不应该在 .h 文件中。当然,我还需要一个 .m
文件。这应该是正确的方法:
.h文件
RequestSpecifics RequestSpecificsMake(BOOL includeMetaData, BOOL includeVerboseData);
.m 文件
RequestSpecifics RequestSpecificsMake(BOOL includeMetaData, BOOL includeVerboseData) {
RequestSpecifics specifics;
specifics.includeMetaData = includeMetaData;
specifics.includeVerboseData = includeVerboseData;
return specifics;
}
最后我不得不结合这两种方法!此外,从外观上看,extern
关键字不是必需的。
关于ios - Objective-C - 类似于 CLLocationCoordinate2DMake 的自定义结构 'make' 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44716880/