我意识到这个问题存在一些主观性,但考虑到Apple开发对于命名约定非常自以为是,我想以其他人理解我的编码工作的方式来做这件事.我试图以最通用的方式提出问题,但我会在评论中添加一些我的具体细节,以防它影响你的答案.
假设我支持iOS 6和iOS 7.现有类上有一种新方法,只存在于iOS 7 SDK中.假设以对我的应用程序"足够好"的方式实现功能是相当简单的.但是,当然,我宁愿使用SDK版本,因为它可能更好地支持,更有效,更好地处理边缘情况.
正如本问答中所述,处理这种情况很简单.
if ([myInstance respondsToSelector:@selector(newSelector)]) {
//Use the SDK method
} else {
//Use my "good enough" implementation.
}
Run Code Online (Sandbox Code Playgroud)
但我不想在一大堆条件调用中丢弃我的代码.似乎封装这种动态方法选择会更好.(特别是在我的情况下,该方法尚未实际发货且名称/签名可能会发生变化.)
我的直觉是添加一个实现我的功能的类类别以及实现这种动态选择方法的包装器方法.
这是正确的方法吗?如果是这样,我应该使用哪些命名约定?(我显然不能将我的方法命名为与iOS7方法相同,否则会出现命名冲突.)
我的直觉反应是调用我的包装器方法safeNewSelector和我的实现一个名为lwNewSelector的私有方法(其中lw是我的标准类前缀).但我宁愿使用一些被认为是标准命名约定的东西.
| 归档时间: |
|
| 查看次数: |
234 次 |
| 最近记录: |