如何测试对象是否是Objective-C中特定类的实例?假设我想知道对象a是否是类b或类c的实例,我该怎么做呢?
当前回答
测试对象是否是类a的实例:
[yourObject isKindOfClass:[a class]]
// Returns a Boolean value that indicates whether the receiver is an instance of
// given class or an instance of any class that inherits from that class.
or
[yourObject isMemberOfClass:[a class]]
// Returns a Boolean value that indicates whether the receiver is an instance of a
// given class.
要获取对象的类名,可以使用NSStringFromClass函数:
NSString *className = NSStringFromClass([yourObject class]);
或者objective-c runtime api中的c函数:
#import <objc/runtime.h>
/* ... */
const char* className = class_getName([yourObject class]);
NSLog(@"yourObject is a: %s", className);
编辑:在Swift
if touch.view is UIPickerView {
// touch.view is of type UIPickerView
}
其他回答
您还可以检查运行时。在代码中放入一个断点并在(lldb)控制台中写入
(lldb) po [yourObject class]
像这样的. .
测试对象是否是类a的实例:
[yourObject isKindOfClass:[a class]]
// Returns a Boolean value that indicates whether the receiver is an instance of
// given class or an instance of any class that inherits from that class.
or
[yourObject isMemberOfClass:[a class]]
// Returns a Boolean value that indicates whether the receiver is an instance of a
// given class.
要获取对象的类名,可以使用NSStringFromClass函数:
NSString *className = NSStringFromClass([yourObject class]);
或者objective-c runtime api中的c函数:
#import <objc/runtime.h>
/* ... */
const char* className = class_getName([yourObject class]);
NSLog(@"yourObject is a: %s", className);
编辑:在Swift
if touch.view is UIPickerView {
// touch.view is of type UIPickerView
}
如果你想检查一个特定的类,那么你可以使用
if([MyClass class] == [myClassObj class]) {
//your object is instance of MyClass
}
你也可以用
NSString *className = [[myObject class] description];
在任何NSObject上
如果你想获得类的名称,只需调用:-
id yourObject= [AnotherClass returningObject];
NSString *className=[yourObject className];
NSLog(@"Class name is : %@",className);
推荐文章
- registerForRemoteNotificationTypes: iOS 8.0及以上版本不支持
- 新的自动引用计数机制是如何工作的?
- 如何测试对象在Objective-C中的类?
- 是否有可能禁用浮动头在UITableView与UITableViewStylePlain?
- 从Cocoa应用程序执行一个终端命令
- Swift编译器错误:“框架模块内的非模块化头”
- 从父iOS访问容器视图控制器
- 自定义dealloc和ARC (Objective-C)
- 调整UITableView的大小以适应内容
- 在代码中为UIButton设置一个图像
- UICollectionView中的单元格间距
- 我如何在我的iOS应用程序中每n分钟得到一个后台位置更新?
- 如何使用UIVisualEffectView来模糊图像?
- 如何改变时间和时区在iPhone模拟器?
- 我如何知道何时UITableView完成了ReloadData?