zoukankan      html  css  js  c++  java
  • NSInvocation调用

    CurrentDate.h

    #import <Foundation/Foundation.h>


    @interface CurrentDate : NSObject {

    }
    - (NSString *) stringForDate: (NSDate *)date
    usingFormatter: (NSDateFormatter
    *)formatter;

    @end

    CurrentDate.m

    #import "CurrentDate.h"


    @implementation CurrentDate

    - (NSString *) stringForDate: (NSDate *)date
    usingFormatter: (NSDateFormatter
    *)formatter
    {
    return [formatter stringFromDate: date];
    }

    @end

    main.m

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

    //参考:http://theocacao.com/document.page/264
    int main (int argc, const char * argv[])
    {

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

    //原始调用
    NSDateFormatter * dateFormat = [[NSDateFormatter alloc]
    initWithDateFormat:
    @"%b %d %Y"
    allowNaturalLanguage: NO];
    CurrentDate
    * currentDateClassObject = [[CurrentDate alloc] init];
    NSString
    * currentDate = [currentDateClassObject
    stringForDate: [NSDate date]
    usingFormatter: dateFormat];
    NSLog(
    @"currentDate: %@", currentDate);


    //NSInvocation调用
    SEL mySelector = @selector(stringForDate:usingFormatter:);
    NSMethodSignature
    * sig = [[currentDateClassObject class]
    instanceMethodSignatureForSelector: mySelector];

    NSInvocation
    * myInvocation = [NSInvocation invocationWithMethodSignature: sig];
    [myInvocation setTarget: currentDateClassObject];
    [myInvocation setSelector: mySelector];

    NSDate
    * myDate = [NSDate date];
    [myInvocation setArgument:
    &myDate atIndex: 2];

    NSDateFormatter
    * dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateStyle: NSDateFormatterMediumStyle];
    [myInvocation setArgument:
    &dateFormatter atIndex: 3];

    NSString
    * result = nil;
    [myInvocation retainArguments];
    [myInvocation invoke];
    [myInvocation getReturnValue:
    &result];
    NSLog(
    @"The result is: %@", result);


    [pool drain];
    return 0;
    }

  • 相关阅读:
    centos7修改网卡名称
    xtrabackup备份恢复过程
    centos 设置删除提示
    cetos6 安装samba共享文件夹
    centos 安装cacti监控
    centos6 搭建hdwiki
    centos6.8安装superctl 后台管理工具
    centos6.5 安装ansible,管理多台服务器
    CreateParams作用及重写
    c# 获取当前应用程序的路径
  • 原文地址:https://www.cnblogs.com/chenjunbiao/p/2022197.html
Copyright © 2011-2022 走看看