zoukankan      html  css  js  c++  java
  • 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];
    }
  • 相关阅读:
    kettle初探
    ECLIPSE 不能连接MYSQL 8 的现象
    easyreport 安装手记
    eclipse 下安装 lombok.jar
    mysql 8 安装及更改密码
    转:Python的这几个技巧,简直屌爆了
    转:通用缩写表
    检查webpack版本
    vue-cli脚手架项目按需引入elementUI
    webstorm “Unterminated statement”
  • 原文地址:https://www.cnblogs.com/yif1991/p/5068293.html
Copyright © 2011-2022 走看看