https://github.com/zhiguangqiao/R.swift
先来看下目前如果我们要使用资源文件时代码是如何调用的:
1 2 3 | leticon=UIImage(named: "settings-icon" ) letFont=UIFont(name: "SanFrancisco" ,size:42) performSegueWithIDentifIEr( "openSettings" ) |
这种通过传入字符串来获取资源有很大的潜在的风险:
最常见的就是资源名称拼写错误。如果项目资源很多检查拼写正确也是颇费时间
如果删除了一个资源文件,只能通过全局搜索资源名称来判断是否已经没有使用这个资源
R.swift的解决方案
先看下上面的逻辑用R.swift代码调用:
R如何解决上面的问题:
强类型
使用一个资源前,先声明是什么类型。如果是一个图片资源就是R.image.xx。这样每次明确知道使用的资源类型。(swift是一门强类型语言,强类型的一个好处就是很多错误可以在编译时就发现)
编译时检查资源文件是否存在
自动填充资源名称
因为会自动根据资源文件生成结构体,所以可以直接使用,不用自己拼写资源名
支持的资源类型
Images
//使用R.swift之前 letsettingsIcon=UIImage(named: ) letgradIEntBackground=UIImage(named: "gradIEnt.jpg" ) //使用R.swift letsettingsIcon=R.image.settingsIcon letgradIEntBackground=R.image.gradIEntJpg |
Storyboards
letstoryboard=UIStoryboard(name: "Main" letinitialTabbarController=storyboard.instantiateInitialVIEwController()as?UITabbarController letsettingsController=self.instantiateVIEwControllerWithIDentifIEr( "settingsController" )as?SettingsController //使用R.swift letstoryboard=R.storyboard.main.instance letinitialTabbarController=R.storyboard.main.initialVIEwController letsettingsController=R.storyboard.main.settingsController //通过这个代码来校验运行时storyboard的图片是否都能被加载 //只在deBUG模式下有效,会通过断言来提示 R.storyboard.main.valIDateImages() //在运行时校验所有的vIEwController能够被正常加载 mode.R.storyboard.main.valIDateVIEwControllers() |
Segues
) //使用R.swift Nibs |
评论列表(0条)