`
yourgame
  • 浏览: 356007 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Objective-C中动态识别的方法-转载自codeios论坛

    博客分类:
  • IOS
阅读更多
 - (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;
   }
分享到:
评论

相关推荐

    将Three20开源库导入Xcode工程项目全过程

    8. 在Other Linker Flags中添加`-ObjC -all_load`,这将确保所有Objective-C类别被正确加载。 9. 至此,手动导入基本完成。在需要使用Three20功能的源代码中,添加`#import "Three20/Three20.h"`头文件,即可开始...

    bmob-iOS-im-sdk:IMSDK源代码

    Bmob-IMSDKIMSDK source codeiOS相关内容使用方法cmd + b 可以直接生成framework,开发者也可以直接把源码拷到自己项目中,按需更改。数据库升级遇到的问题可参照 进行处理版本1.0.1修复的内容修复保存到聊天表中...

    iOS 直接调用 ionicons 图标集合.zip

    在iOS开发中,UI设计是用户体验的关键组成部分,而图标作为用户界面的重要元素,常常需要定制且一致。"iOS 直接调用 ionicons 图标集合.zip" 提供了一个解决方案,它是一个开源项目,允许开发者在Swift应用中方便地...

    DemoCode:博客演示代码

    DemoCodeBlog Demo CodeiOS动画指南 - 2.Layer Animations的基本使用iOS动画指南 - 3.Layer Animations的进阶使用iOS动画指南 - 4.右拉的3D抽屉效果iOS动画指南 - 5.下雪的粒子效果、帧动画iOS动画指南 - 6.可以很酷...

Global site tag (gtag.js) - Google Analytics