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

     }

    }        

  • 相关阅读:
    .NET题目(收集来自网络)
    c#反射
    c#泛型
    asp.net core 下载文件,上传excel文件
    remote: HTTP Basic: Access denied fatal: Authentication failed for'https'
    获取jwt(json web token)中存储的用户信息
    System.data.sqlclient.sqlexception:将截断字符串或二进制数据终止
    代码热更新
    左手坐标系 vs 右手坐标系
    GPU相关临时笔记
  • 原文地址:https://www.cnblogs.com/oc-bowen/p/5028689.html
Copyright © 2011-2022 走看看