zoukankan      html  css  js  c++  java
  • 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

     }

    }        

  • 相关阅读:
    [CF1462F] The Treasure of The Segments
    [CF1466E] Apollo versus Pan
    SYZOJ 搭建 Note
    [CF1476D] Journey
    [CF1476E] Pattern Matching
    [CF1494D] Dogeforces
    [CF1383B] GameGame
    [CF1383A] String Transformation 1
    [CF1453D] Checkpoints
    [CF1453C] Triangles
  • 原文地址:https://www.cnblogs.com/oc-bowen/p/5028689.html
Copyright © 2011-2022 走看看