objective-c - 在 Objective-C 生成的代码中 Protobuf 缺少“列表”后缀
问题描述
我将 protobuf 2.6.1 与我自己编译的这个插件一起使用。
在我正在使用的项目中,Protobuf 模型已经存在。我尝试使用以下命令重新生成文件:
protoc --plugin=/path/to/the/compiled/plugin/objc-gen --objc_out=./gen/ NAME.proto OF.proto THE.proto FILES.proto
通常,这些文件与先前生成的模型非常匹配,但是存在一些语法差异。
以下 .proto 字符串:
repeated MyType case = 4;
在 Obj-C 中被翻译成这一行(新插件,带有 ARC):
@property (readonly, strong) NSArray * case;
而且它曾经带有List
后缀(旧插件,非ARC,不适用于当前版本的macOS):
- (NSArray*) caseList;
鉴于这case
是 Objective-C 中的关键字,这会触发编译错误。
问题:
由于什么版本的 Protobuf 更改了语法以省略
List
后缀?是否可以使用新插件触发“旧”行为?
在 macOS 10.14.3 上运行并能够生成具有旧样式(即带有
list
后缀)的文件的最后一个插件版本是什么?
解决方案
推荐阅读
- amazon-web-services - Boto3:调用 client.associate_iam_instance_profile 时 IAM 实例配置文件 ARN 无效
- vue.js - 历史模式下的 Vue 3 路由器重新加载页面
- amazon-sns - 以纯文本形式订阅 AWS SNS email-json
- php - 尝试使用 Eloquent、Slim3 框架创建搜索系统。和阿贾克斯
- bash - 试图通过 bash 终端 .bash 的 gulpfile:意外标记 `(' 附近的语法错误
- python - 通过python计算uniswap对地址
- javascript - 如何使用reduce函数获取用户的GitHub存储库总数
- python - Pyinstaller - 如何通过命令行生成具有多个隐藏导入的规范文件?
- scala - Zeppelin 在加载 DeltaTable 后失败“找不到活动的 SparkSession”
- javascript - 循环遍历数组并对 API 进行请求调用并不能在使用 async/await 关键字的本机反应中解决