gpt4 book ai didi

ios - 何时使用 respondsToSelector 与 objc_getClass

转载 作者:搜寻专家 更新时间:2023-11-01 06:23:57 25 4
gpt4 key购买 nike

if respondsToSelector("UIAlertController"){
//do something
}

if objc_getClass("UIAlertController") != nil{
//do something
}

这两者总体上具有相同的结果。有没有一种情况比另一种好?或者应该只使用其中一个而忘记另一个?

最佳答案

respondsToSelector :这主要用于检查对象引用是否可以调用特定方法。例如,对象继承自某个基类或被某些协议(protocol)实现,那么最好检查对象是否能够响应该方法,然后才调用它。

否则会抛出运行时错误,找不到类型的方法。

if([obj respondsToSelector:@selector(anyMethod)]) {
[obj fizzyWizzle];
}
else {
// do something
}

objc_getClass :指定类的 Class 对象,如果该类未在 Objective-C 运行时注册,则为 nil。这意味着,你是否能够访问这个类,如果那个类不存在那么它将返回'nil'。所以,

if objc_getClass("UIAlertController") != nil{
// it means, these class is available in SDK, hence its iOS version is 8.x
// here you can alloc - init and use UIAlertController functionality
}
else {
// class could not be found
// iOS version is < 8.0
// here that class is not available hence use UIAlertView which is supported by iOS 7 and earlier.
}

希望这对您有所帮助。

关于ios - 何时使用 respondsToSelector 与 objc_getClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27588099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com