• OC id类型


    id数据类型可存储任何类型的对象。从某种意义说,它是一般对象类型。

    -------------------------"NormalMan.h"-----------------------------

    #import <Foundation/Foundation.h>

     @interface NormalMan : NSObject

    // 在一个类中声明一个id对象

    // 在此类的方法中让这个id对象performselector 执行某个方法

    // 在主调时,先给此类的id类对象赋值 ,让这个id对象有一个明确的类

    // 调用此类中的[某个方法] 让这个id类型的对象,去执行方法

    @property id someOne;

    @property SEL buySmoke;

     -(void) run;

     @end

    -------------------------"NormalMan.m"-----------------------------

    #import "NormalMan.h"

    @implementation NormalMan

    -(void) run

    {

        // performselector方法中的参数

        /*

            SEL:想要self.someOne执行的方法

             id:执行的方法的参数

            performselector在执行对象不明确时使用

         */

        [self.someOne performSelector:@selector(run) withObject:nil];

        

        [self.someOne performSelector:self.buySmoke withObject:nil];

        //@selector(buyXueGao)==self.buySmoke

        

        // 方法选择器:@selector()

        // 他的类型是:SEL

        

    }

    @end

    ----------------------SuperMan.h-----------------------

    #import <Foundation/Foundation.h>

    @interface SuperMan : NSObject

    -(void) run;

    -(void) buyXueGao;

     @end

    ----------------------SuperMan.m-----------------------

    #import "SuperMan.h"

     @implementation SuperMan

    -(void) run

    {

        NSLog(@"牛逼哄哄的,快飞");

    }

    -(void) buyXueGao

    {

        NSLog(@"雪糕好吃");

    }

    @end

    ----------------------测试文件-----------------------

    #import <Foundation/Foundation.h>

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

        @autoreleasepool {        

            NormalMan *shang = [[NormalMan alloc] init];

            

            SuperMan *frank = [[SuperMan alloc] init];

            

            shang.someOne = frank;

            shang.buySmoke = @selector(buyXueGao);

            [shang run];// run,buySmoke

     }

    }        

  • 相关阅读:
    get started with laravel
    redis消息队列
    javascript模板引擎Mustache
    YIi 权限管理和基于角色的访问控制
    Yii CDbCriteria
    C++ 推断进程是否存在
    IE浏览器开启对JavaScript脚本的支持
    最小公约数(欧几里得算法&amp;&amp;stein算法)
    Nyoj 43 24 Point game 【DFS】
    【蓝桥杯】PREV-5 错误票据
  • 原文地址:https://www.cnblogs.com/oc-bowen/p/5028689.html
Copyright © 2020-2023  润新知