
当您通过Nsstring以编程方式自然引用文件时,Cocoa开发中有多个要点:
[UINib nibWithNibname:@"MyNib" bundle:nil];[UIImage imagenamed:@"MyImage"];[[UIVIEwController alloc] initWithNibname:@"MyNib" bundle:nil];
有没有办法在编译时检查这些文件引用是否有效?
通常在使用上述方法之后,我最终会更改引用文件的名称,但忘记在代码中更改名称.一切都顺从,没有问题,只有当你碰巧去访问该文件的应用程序部分时,BUG才会显露出来.
是否有人们用来避免这种错误的另一种方法或技术?
通过字符串引用文件名感觉非常脆弱.
[[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].你无法在编译时检查这个问题.
另外不要忘记进行反向检查 – 不要包含任何地方都不使用的图像文件.
总结以上是内存溢出为你收集整理的objective-c – 在Xcode中编译有效文件引用的时间检查全部内容,希望文章能够帮你解决objective-c – 在Xcode中编译有效文件引用的时间检查所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)