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;
    }

  • 相关阅读:
    同步类容器和并发类容器
    T4模板生成自定义的实体类
    C# UrlEncode 编码
    PLSQL快速生成增删改查语句
    Oracle 检查星期只能是1-7的数字不能重复
    PLSQL 插入数据无响应
    C# DataTable 排序
    C# 获取程序集信息
    C# 调用WinRAR解压缩文件
    DataTable 获取一列最大值并修改
  • 原文地址:https://www.cnblogs.com/chenjunbiao/p/2022197.html
Copyright © 2011-2022 走看看