在开发SDK的过程中,我们肯定无法避免使用第三方的库,比如 AFNetworking 等常用的库,如果我们直接把第三方的库添加到工程中使用,这样在SDK中是可以正常使用的,但是我们需要考虑到另外一种情况,SDK 是对外提供给其他开发者使用的,我们不可知开发者在开发过程中是否也使用到第三方库,如果开发者和SDK都使用了同一个第方法库,这样工程就会编译不过了,因为有重复的类等问题。
这时,我们就不能直接使用第三方的库了,因为可能会和开发者使用的库冲突,但我们也没有理由去自己开发一套新的库,这种造轮子的效率太低了,我们可以直接修改第三方库的类名,enum 名, 全局变量的名等,为它们加一个独特的前缀,使它们与原本的库文件同时存在的时候不会冲突就可以了。
这里主要提及下需要添加前缀的情况,以 AFNetworking 为例子:
1.全局变量:

2.protocol

3.类名

这里就不一一列举,最简单的方法是在把类名和文件名全部加上前缀后,再把原来的第三方库重新导入,然后再 build 下, 所有有冲突的地方都是提示出来,只需要根据提示一个个来改就可以了,这是一个不断复制粘贴的工作,让人很烦躁的事情,不知道有没有朋友知道有更好的方式可以分享下,感谢感谢啊。
这篇简短的文章写得真的太过于简短,主要是为了在这里卖个广告,我创建了一个 iOS SDK 开发的qq群,群号:127548419,有兴趣的就加下。
网友评论
workspace 'FangKeDemo.xcworkspace'
abstract_target 'FangKeDemo' do
pod 'SDWebImage', '3.8.2'
pod 'Toast', '~> 3.0'
pod 'SVProgressHUD', '~> 2.0.3'
pod 'M80AttributedLabel', '~> 1.5.0'
pod 'TZImagePickerController', '~> 1.7.7'
target 'FangKe' do
project 'FangKe.xcodeproj'
pod 'FMDB', '~> 2.5'
pod 'Reachability', '~> 3.1.1'
pod 'CocoaLumberjack', '~> 2.0.0-rc2'
pod 'SSZipArchive', '~> 1.2'
end
target 'Interface' do
project '../Interface/Interface.xcodeproj'
end
end