zoukankan      html  css  js  c++  java
  • 动态调用

    #如果你想在运行时通过给定的字符串来动态创建对应的对象并且调用某中的方法。

    #如果你得到一个id对象,但不知道该对象是否含有某方法,如果有就调用它。

    请看下面的例子:

    DynObj.h

     

    #import <Foundation/Foundation.h>


    @interface DynObj : NSObject {
    NSString
    *name;
    }

    @property(nonatomic,retain) NSString
    * name;

    - (id) init;
    - (void) dealloc;

    -(void) show;

    @end

    DynObj.m

     

    #import "DynObj.h"


    @implementation DynObj

    @synthesize name;

    - (id)init
    {
    if((self = [super init]))
    {
    name
    = @"123";
    }
    return self;
    }

    - (void) dealloc
    {
    [name release];
    [super dealloc];
    }

    -(void) show
    {
    NSLog(
    @"%@", name);
    }

    @end

    main.m

     

    #import <Foundation/Foundation.h>
    #import
    "DynObj.h"

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

    NSAutoreleasePool
    * pool = [[NSAutoreleasePool alloc] init];

    //动态创建对象
    Class classToInstantiate = NSClassFromString(@"DynObj");
    id newObject
    = [[classToInstantiate alloc] init];
    [newObject show];

    //通过选择器判断是否存在某方法
    if([newObject respondsToSelector:@selector(show)])
    {
    [newObject show];
    }

    [pool drain];
    return 0;
    }

    输出:

     

    2011-04-29 09:35:52.615 demo02[1980:903] 123
    2011-04-29 09:35:52.618 demo02[1980:903] 123
    Program ended with exit code:
    0
  • 相关阅读:
    基于Ubuntu Jeos打造自己的精简版Linux服务器
    35 vs 53怎么裁
    父母在,不远游
    linux deepin是基于linux mint修改
    novell
    Sahi
    virtualbox on windows store vdi on ndfs due the file will bigger than 4gb
    在Linux下配置邮件系统
    CSS3 backgroundsize 属性
    dede:list及dede:arclist 按权重排序的方法
  • 原文地址:https://www.cnblogs.com/chenjunbiao/p/2032431.html
Copyright © 2011-2022 走看看