现在的位置: 首页 > 综合 > 正文

OC之【NSObject使用】

2014年09月10日 ⁄ 综合 ⁄ 共 1542字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.