加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 在Xcode中编译有效文件引用的时间检查

发布时间:2020-12-14 18:02:00 所属栏目:百科 来源:网络整理
导读:是否可以强制 Xcode编译器验证代码中引用的文件是否有效? 当您通过NSString以编程方式自然引用文件时,Cocoa开发中有多个要点: [UINib nibWithNibName:@"MyNib" bundle:nil];[UIImage imageNamed:@"MyImage"];[[UIViewController alloc] initWithNibName:@"
是否可以强制 Xcode编译器验证代码中引用的文件是否有效?

当您通过NSString以编程方式自然引用文件时,Cocoa开发中有多个要点:

[UINib nibWithNibName:@"MyNib" bundle:nil];
[UIImage imageNamed:@"MyImage"];
[[UIViewController alloc] initWithNibName:@"MyNib" bundle:nil];

有没有办法在编译时检查这些文件引用是否有效?

通常在使用上述方法之后,我最终会更改引用文件的名称,但忘记在代码中更改名称.一切都顺从,没有问题,只有当你碰巧去访问该文件的应用程序部分时,bug才会显露出来.

是否有人们用来避免这种错误的另一种方法或技术?
通过字符串引用文件名感觉非常脆弱.

解决方法

Nib通常有一个与文件同名的类,例如

[[MyViewController alloc] initWithNibName:NSStringFromClassName([MyViewController class]) bundle:nil];

我通常将它作为[self class]隐藏在控制器的init方法中.

对于图像加载,编译时检查很困难.帮助自己使用宏,首先用一个简单的宏替换加载方法,例如

#define LOAD_IMAGE(__IMAGE_NAME__) [UIImage imageNamed:__IMAGE_NAME__]

您应该做的第一件事是将断言放入此宏并始终检查图像是否已成功加载.这不是编译时检查,但它有助于找到缺少的资源.

第二件事是编写一个ruby / python / shell /(任何脚本语言)脚本,它将在源文件中搜索LOAD_IMAGE并检查文件(括号之间)是否存在.作为shell脚本,它将非常简单(例如使用grep).您可以将此脚本添加到xcode项目中,以便在编译时运行.
不要忘记检查xibs引用的图像.

但是,通常您必须动态创建图像名称,例如NSString * imageName = [NSString stringWithFormat:@“image_%i”,index].你无法在编译时检查这个问题.

另外不要忘记进行反向检查 – 不要包含任何地方都不使用的图像文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读