• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
yif
专注于C/C++,C#,Objective-C,GIS,空间统计,数据挖掘,智慧城市
博客园    首页    新随笔    联系   管理    订阅  订阅
Objective-C:Foundation框架-常用类-NSObject

NSObject是所有类的基类,其常见用法有: 

#import <Foundation/Foundation.h>

@interface Person : NSObject
- (void)test;
@end

#import "Person.h"

@implementation Person
- (void)test {
    NSLog(@"调用了Person的test方法");
}
@end

#import "Person.h"

@interface Student : Person

- (void)test;

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

@end

#import "Student.h"

@implementation Student

- (void)test {
    NSLog(@"调用了test方法");
}

- (void)test2:(NSString *)a {
    NSLog(@"调用了test2方法:%@", a);
}

@end

 

#import <Foundation/Foundation.h>
#import "Student.h"
#import "Person.h"

#pragma mark NSObject常用方法
void objUse() {
    Student *stu = [[[Student alloc] init] autorelease];
    
    // isKindOfClass判断对象是否属于某个类 或者 子类
    if ( [stu isKindOfClass:[Person class]] ) {
        // NSLog(@"stu属于Person或者继承自Person");
    }
    
    // isMemberOfClass判断对象是否属于某个类(不包括子类)
    BOOL result = [stu isMemberOfClass:[Student class]];
    // NSLog(@"%i", result);
    
    
    // 直接调用
    // [stu test];
    
    // 间接调用
    [stu performSelector:@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([Person class]);
    
    
    // 方法的反射
    NSString *method = @"test";
    SEL selector = NSSelectorFromString(method);
    [person performSelector:selector];
    
    // 将SEL转换为字符串
    NSString *selectorName = NSStringFromSelector(selector);
    
    
    [person release];
}

 

posted on 2015-12-24 15:43  mattran  阅读(174)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3