zoukankan      html  css  js  c++  java
  • nsrange和自定义结构体转换为nsvalue类型

    The NSNumber class is itself a subclass of the basic NSValue class, which provides an object wrapper around a single value or data item. In addition to the basic C scalar types, NSValue can also be used to represent pointers and structures.

    The NSValue class offers various factory methods to create a value with a given standard structure, which makes it easy to create an instance to represent, for example, an NSRange, like the example from earlier in the chapter:

        NSString *mainString = @"This is a long string";
        NSRange substringRange = [mainString rangeOfString:@"long"];
        NSValue *rangeValue = [NSValue valueWithRange:substringRange];
    It’s also possible to create NSValue objects to represent custom structures. If you have a particular need to use a C structure (rather than an Objective-C object) to store information, like this:

    typedef struct {
        int i;
        float f;
    } MyIntegerFloatStruct;
    you can create an NSValue instance by providing a pointer to the structure as well as an encoded Objective-C type. The @encode() compiler directive is used to create the correct Objective-C type, like this:

        struct MyIntegerFloatStruct aStruct;
        aStruct.i = 42;
        aStruct.f = 3.14;
     
        NSValue *structValue = [NSValue value:&aStruct
                                 withObjCType:@encode(MyIntegerFloatStruct)];
    The standard C reference operator (&) is used to provide the address of aStruct for the value parameter.

  • 相关阅读:
    HTML5 新增元素梳理
    HTML布局梳理
    ES6中新增let命令使用方法
    xml学习-语法规则
    初步了解URL
    JavaScript——装饰者模式
    移动视频技术——新增API可手工修正视频方向
    如何在移动视频开发中使用ip组播技术
    Windows平台AnyChat视频显示
    如何实现音频合成立体声录制?
  • 原文地址:https://www.cnblogs.com/NSNULL/p/4479818.html
Copyright © 2011-2022 走看看