OC之【NSObject使用】

原创 2013年12月02日 16:40:37

main.m文件

#import <Foundation/Foundation.h>

#import "Student.h"

#import "Person.h"


#pragma mark NSObject常用方法

void objUse() {

   Student *stu = [[[Studentalloc] init]autorelease];

    

    // isKindOfClass判断对象是否属于某个类或者 子类

   if ( [stu isKindOfClass:[Personclass]] ) {

        // NSLog(@"stu属于Person或者继承自Person");

    }

    

    // isMemberOfClass判断对象是否属于某个类(不包括子类)

   BOOL result = [stu isMemberOfClass:[Student class]];

    // NSLog(@"%i", result);

    

    

    // 直接调用

    // [stu test];

    

    // 间接调用

    [stuperformSelector:@selector(test)];

    // [stu performSelector:@selector(test2:) withObject:@"abc"];

    // 延迟2秒后调用test2:方法

    [stu performSelector:@selector(test2:)withObject:@"abc"afterDelay:2];

}


void reflect() {

    // 类的反射

   NSString *str = @"Person";

   Class class = NSClassFromString(str);

    

   Person *person = [[class alloc] init];

   NSLog(@"%@", person);

    

    

    // Class变成字符串

    NSString *name = NSStringFromClass([Personclass]);

    

    

    // 方法的反射

   NSString *method = @"test";

   SEL selector = NSSelectorFromString(method);

    [personperformSelector:selector];

    

    // SEL转换为字符串

   NSString *selectorName = NSStringFromSelector(selector);

    

    

    [personrelease];

}


int main(int argc,const char * argv[])

{


    @autoreleasepool {

       reflect();

    }

   return 0;

}


Person.h文件

#import <Foundation/Foundation.h>


@interface Person :NSObject

- (void)test;

@end



Person.m文件

#import "Person.h"

@implementation Person

- (void)test {

    NSLog(@"调用了Persontest方法");

}

@end



Student.h文件

#import "Person.h"

@interface Student :Person


- (void)test;


- (void)test2:(NSString *)a;


@end



Student.m文件

#import "Student.h"

@implementation Student

- (void)test {

    NSLog(@"调用了test方法");

}


- (void)test2:(NSString *)a {

    NSLog(@"调用了test2方法:%@", a);

}


@end



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

OC学习篇之---Foundation框架中的NSObject对象

前一篇文章讲到了OC中的代理模式:http://blog.csdn.net/jiangwei0910410003/article/details/41777627,而且前几篇文章就介绍了OC中的类相关...

OC视频笔记3.1(Foundation框架,NSObject里面的方法)3.2(isKindOfClass和isMemberOfClass)

Cocoa是苹果公司为Mac OS X所创建的原生面向对象的API,是Mac OS X上五大API之一(其它四个是Carbon、POSIX、X11和Java)。 OS X是苹果公司为Mac系...
  • v7595v
  • v7595v
  • 2015年05月30日 20:05
  • 401

Objective-C中的NSObject对象经常使用到的方法

/* 用于判断对象是不是参数提供的类型(参数可以是父类的class) 参数示例: [NSObject class]; */ - (BOOL)isKindOfClass:(Class)aClas...

IOS_OC_id ,NSObject, id<NSObject>区别

我们经常会混淆以下三种申明(我是没有留意过):     1. id foo1;     2. NSObject *foo2;     3. id foo3;     第一种是最常用的,它简...

oc类说明使用说明

  • 2015年03月28日 11:35
  • 28KB
  • 下载

把NSObject对象输出为字典

根据对象属性值和属性名生成字典,可以用于拼接json字符串。

java与oc使用rsa加密

  • 2016年04月12日 00:11
  • 8.95MB
  • 下载

Swift和OC代码的相互使用

  • 2016年08月23日 10:36
  • 50KB
  • 下载

OjbC中NSObject面向对象特性的底层实现

#include typedef const struct objc_selector { void *sel_id; const char *sel_types; } *SEL;...
  • omegayy
  • omegayy
  • 2012年03月19日 18:16
  • 11479
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OC之【NSObject使用】
举报原因:
原因补充:

(最多只允许输入30个字)