我使用旧项目,在项目的某些部分,命名惯例不好,所以我想改变它。
例如:
@property (weak, nonatomic) IBOutlet UIButton *btnRequestCode;
rename it to -> @property (weak, nonatomic) IBOutlet UIButton *requestCodeButton;
我知道我可以删除IBOutlet
然后重新连接,但如果不小心可能需要很多时间且容易犯错误
任何安全快捷的方法吗?
我试过了Refactor - >重命名,但它不起作用并给我一个警告
非常感谢任何帮助或建议。
答案 0 :(得分:17)
这就是我通常做的事情
答案 1 :(得分:8)
Xcode 9中的新功能,您可以同时重命名代码和故事板中的插座(或操作)。
*免责声明:此功能仅适用于Xcode 9(2017年9月发布)及更高版本。确保在使用之前备份项目。更改插座名称后,测试受影响的屏幕以确保没有问题。我在一个示例Objective C项目中成功测试了这个,但它可能会导致现有的,更复杂的项目出现问题。
重命名插座......
@property (weak, nonatomic) IBOutlet UIButton *btnRequestCode;
@property (weak, nonatomic) IBOutlet UIButton *requestCodeButton;
答案 2 :(得分:2)
我把我的两分钱。我试图重构几个类似的IBOutlet-s并结束只成功完成一个 - 第一个。
Project和XCode重新加载并不能解决问题。我检查了* .xib源代码 - 第一个很好: 我的XCode ver 9.2(9C40b)
答案 3 :(得分:0)
如果您使用的是Xcode版本9.0(发布 9A235或更早版本的测试版)并且您不希望在UIApplicationMain()
崩溃,则需要按顺序执行以下步骤重命名IBOutlet
实例变量。 (见下文)
<强>步骤强>:
DO
while(存在未经修改的相关.xib文件)
我浪费了几个小时试图找出应用程序在对变量名称进行大规模重构之后在UIApplicationMain()
中崩溃的原因。没有逻辑变化,只需几个小时的记录,清理结构的可读性,只是清理名称......不值得正常测试但是当我决定运行时...... BOOM
事实证明,(ahem)&#34;发布&#34; Xcode 9没有设法实际重构 IBOutlet实例变量名称,所以你降级为手动干扰.xib文件。 真正的重构将在项目中进行所有必要的更改......
这是一个回归测试的例子,说明如何以及如何做。
示例:强>
选择IBOutlet
实例变量,然后右键单击,选择Refactor - &gt;重命名......:
现在更改名称。 (例如,从textFieldController
到editTextFieldController
):
现在,对于Xcode忽略的关键部分,请更改XML中的自定义出口属性:
然后找到原始变量(例如textFieldController
)并将其更改为新的变量名称(例如editTextFieldController
)
...然后当你编译并运行时,它不会在UIApplicationMain()
中抛出异常/断言......