【发布时间】:2012-07-24 03:50:27
【问题描述】:
我有自己的静态库,其中包括用于检查互联网连接的可达性。
我在我的静态库 http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html 中使用 Reachability 2.2 版本
其他开发人员将我的静态库添加到他的(第 3 方项目)已经有其他 Reachability(Pod 规范中的标记 3.0)
他通过 Cocoa Pods 安装它。见spec。
如您所见,这是 pod 中的最后一个版本。
好的,项目构建没有错误。
但是我们得到了错误:
+[Reachability reachabilityWithHostName:]: unrecognized selector sent to class 0x2c77fc
我花了很多时间来找出问题所在。
所以可达性 2.2 有声明:
+ (Reachability*) reachabilityWithHostName: (NSString*) hostName;
但是,Reachability 3.0 有以下声明:
+(Reachability*)reachabilityWithHostname:(NSString*)hostname;
有什么不同吗?!编译成功!看看“HostName”......是的,小“n”。 当我们检查静态库中的主机可达性时,我们会得到无法识别的选择器。
我的问题是 - 避免这个问题的最佳方法是什么?我是否应该强制其他想要构建我的静态库的开发人员使用 Apple 的 Reachability 或其他东西?
谢谢
【问题讨论】:
-
尽可能使用苹果的库,因为它们不太可能改变。
-
但是,其他 ARC 兼容。许多开发者都在使用它!
-
用
-fno-objc-arc简单编译苹果的库。 -
Apple 的 Reachability 与 ARC 兼容,可通过
pod 'AppleReachability'获得
标签: objective-c ios reachability