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];
    }
  • 相关阅读:
    HTML元素解释
    Java命名规范
    HDU 1058 Humble Numbers(DP,数)
    HDU 2845 Beans(DP,最大不连续和)
    HDU 2830 Matrix Swapping II (DP,最大全1矩阵)
    HDU 2870 Largest Submatrix(DP)
    HDU 1421 搬寝室(DP)
    HDU 2844 Coins (组合背包)
    HDU 2577 How to Type(模拟)
    HDU 2159 FATE(二维完全背包)
  • 原文地址:https://www.cnblogs.com/yif1991/p/5068293.html
Copyright © 2011-2022 走看看