objective-c – 使用performSelector:访问BOOL属性

objective-c – 使用performSelector:访问BOOL属性,第1张

概述我正在使用performSelector:,它返回一个id对象,以调用其他几个方法.这些方法的返回类型实际上可以是BOOL,int,NSDate或任何其他类型的对象. 我如何判断从performSelector返回的对象是否是BOOL? 我尝试将其转换为NSNumber等,但如果对象不是BOOL,则会崩溃. 我有一个具有以下属性的类: @property(retain,nonatomic) NSS 我正在使用performSelector:,它返回一个ID对象,以调用其他几个方法.这些方法的返回类型实际上可以是BOol,int,NSDate或任何其他类型的对象.

我如何判断从performSelector返回的对象是否是BOol?
我尝试将其转换为NSNumber等,但如果对象不是BOol,则会崩溃.

我有一个具有以下属性的类:

@property(retain,nonatomic) Nsstring* A;@property(assign,nonatomic) BOol B;@property(retain,nonatomic) NSArray* C;@property(assign,nonatomic) int64_t D;

这个类是由框架生成的,所以我无法改变它.但我想循环A,B,C,D来调用每个属性并检索数据.但是,正如您所看到的,返回类型可能会有所不同,我需要调整它.

我正在做类似的事情:

SEL s = NSSelectorFromString(@"A");ID obj = [object performSelector:s];//check if obj is BOol//do something with obj
解决方法 如果你需要做的只是获取各种属性的值,使用键值编码,它会在NSNumber的实例中自动包装标量类型,如int和BOol.所以你需要的只是以下几行:

ID value = [object valueForKey:@"somePropertyname"];

否则,您可以通过调用目标对象上的methodSignatureForSelector:提前检查返回类型,但考虑到您描述的情况,这似乎是一堆不必要的工作.

总结

以上是内存溢出为你收集整理的objective-c – 使用performSelector:访问BOOL属性全部内容,希望文章能够帮你解决objective-c – 使用performSelector:访问BOOL属性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1006723.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存