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.

  • 相关阅读:
    Valid Parentheses
    3Sum
    泛型(一)
    Longest Common Prefix
    Roman to Integer
    Integer to Roman
    Container With Most Water
    知道创宇研发技能表v2.2
    anti-dns pinning 攻击
    dominator
  • 原文地址:https://www.cnblogs.com/NSNULL/p/4479818.html
Copyright © 2011-2022 走看看