如何测试对象是否是Objective-C中特定类的实例?假设我想知道对象a是否是类b或类c的实例,我该怎么做呢?
当前回答
您还可以检查运行时。在代码中放入一个断点并在(lldb)控制台中写入
(lldb) po [yourObject class]
像这样的. .
其他回答
您还可以检查运行时。在代码中放入一个断点并在(lldb)控制台中写入
(lldb) po [yourObject class]
像这样的. .
如果你想获得类的名称,只需调用:-
id yourObject= [AnotherClass returningObject];
NSString *className=[yourObject className];
NSLog(@"Class name is : %@",className);
如果你想检查一个特定的类,那么你可以使用
if([MyClass class] == [myClassObj class]) {
//your object is instance of MyClass
}
在苹果文档中isKindOfClass是什么意思
在类集群表示的对象上使用此方法时要小心。由于类集群的性质,您返回的对象可能并不总是您所期望的类型。如果您调用一个返回类集群的方法,该方法返回的确切类型是您可以对该对象做什么的最佳指示器。例如,如果一个方法返回一个指向NSArray对象的指针,你不应该使用这个方法来查看数组是否可变,如下所示的代码:
// DO NOT DO THIS!
if ([myArray isKindOfClass:[NSMutableArray class]])
{
// Modify the object
}
如果在代码中使用这样的构造,您可能会认为修改一个实际上不应该修改的对象是可以的。这样做可能会给其他希望对象保持不变的代码带来问题。
你也可以用
NSString *className = [[myObject class] description];
在任何NSObject上
推荐文章
- 为什么ARC仍然需要@autoreleasepool ?
- 首先添加一个UIView,甚至是导航栏
- 我如何改变UIButton标题颜色?
- iOS -构建失败,CocoaPods无法找到头文件
- Xcode 4挂在“附加到(应用程序名称)”
- 以编程方式创建segue
- 在Objective-C中@synchronized如何锁定/解锁?
- Xcode构建失败“架构x86_64未定义的符号”
- 动态改变UILabel的字体大小
- registerForRemoteNotificationTypes: iOS 8.0及以上版本不支持
- 新的自动引用计数机制是如何工作的?
- 如何测试对象在Objective-C中的类?
- 是否有可能禁用浮动头在UITableView与UITableViewStylePlain?
- 从Cocoa应用程序执行一个终端命令
- Swift编译器错误:“框架模块内的非模块化头”