- (BOOL) isKindOfClass: classObj //是否是其子孙或一员
- (BOOL) isMemberOfClass: classObj //是否是其一员
- (BOOL) respondsToSelector: selector //是否有这种方法
+ (BOOL) instancesRespondToSelector: selector //类的对象是否有这种方法
- (id) performSelector: selector // 执行对象的方法
#import "Square.h"
#import "Rectangle.h"
#import < stdio.h >
int main(int argc, const char * argv[]) {
Rectangle * rec = [[Rectangle alloc] initWithWidth: 10 height: 20];
Square * sq = [[Square alloc] initWithSize: 15];
// isMemberOfClass
// true
if ([sq isMemberOfClass: [Square class]] == YES) {
printf("square is a member of square class\n");
}
// false
if ([sq isMemberOfClass: [Rectangle class]] == YES) {
printf("square is a member of rectangle class\n");
}
// false
if ([sq isMemberOfClass: [NSObject class]] == YES) {
printf("square is a member of object class\n");
}
// isKindOfClass
// true
if ([sq isKindOfClass: [Square class]] == YES) {
printf("square is a kind of square class\n");
}
// true
if ([sq isKindOfClass: [Rectangle class]] == YES) {
printf("square is a kind of rectangle class\n");
}
// true
if ([sq isKindOfClass: [NSObject class]] == YES) {
printf("square is a kind of object class\n");
}
// respondsToSelector
// true
if ([sq respondsToSelector: @selector(setSize: )] == YES) {
printf("square responds to setSize: method\n");
}
// false
if ([sq respondsToSelector: @selector(nonExistant)] == YES) {
printf("square responds to nonExistant method\n");
}
// true
if ([Square respondsToSelector: @selector(alloc)] == YES) {
printf("square class responds to alloc method\n");
}
// instancesRespondToSelector
// false
if ([Rectangle instancesRespondToSelector: @selector(setSize: )] == YES) {
printf("rectangle instance responds to setSize: method\n");
}
// true
if ([Square instancesRespondToSelector: @selector(setSize: )] == YES) {
printf("square instance responds to setSize: method\n");
}
// free memory
[rec release];[sq release];
return 0;
}
分享到:
相关推荐
8. 在Other Linker Flags中添加`-ObjC -all_load`,这将确保所有Objective-C类别被正确加载。 9. 至此,手动导入基本完成。在需要使用Three20功能的源代码中,添加`#import "Three20/Three20.h"`头文件,即可开始...
Bmob-IMSDKIMSDK source codeiOS相关内容使用方法cmd + b 可以直接生成framework,开发者也可以直接把源码拷到自己项目中,按需更改。数据库升级遇到的问题可参照 进行处理版本1.0.1修复的内容修复保存到聊天表中...
在iOS开发中,UI设计是用户体验的关键组成部分,而图标作为用户界面的重要元素,常常需要定制且一致。"iOS 直接调用 ionicons 图标集合.zip" 提供了一个解决方案,它是一个开源项目,允许开发者在Swift应用中方便地...
DemoCodeBlog Demo CodeiOS动画指南 - 2.Layer Animations的基本使用iOS动画指南 - 3.Layer Animations的进阶使用iOS动画指南 - 4.右拉的3D抽屉效果iOS动画指南 - 5.下雪的粒子效果、帧动画iOS动画指南 - 6.可以很酷...