天天看点

Objective-c - NSObject万能指针

#import <Foundation/Foundation.h>

#pragma mark -

#pragma mark 人类的创建

//声明

@interface YYPerson : NSObject

@property NSString *name;

@property int age;

- (void)sayHi;

@end

//实现

@implementation YYPerson

- (void)sayHi

{

    NSLog(@"大家好!我叫%@,我今年%d岁了!", _name, _age);

}

@end

#pragma mark -

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

    //创建人类对象

    YYPerson *xiaoming = [YYPerson new];

    //赋值属性

    xiaoming.name = @"小明";

    xiaoming.age = 18;

    //调用方法

    [xiaoming sayHi];

    //创建人类对象(父类指针指向子类对象)

    NSObject *xiaohua = [YYPerson new];

    [(YYPerson *)xiaohua setName:@"小花"];//NSObject指针的局限性,只能使用中括弧调用方法,不能使用点语法.

    [(YYPerson *)xiaohua setAge:20];

    //当NSObject指针指向子类对象的时候,如果要调用子类对象独有的方法,就必须做类型转换.否则就会报错.

    [(YYPerson *)xiaohua sayHi];

    return 0;

}