Objective-C:Foundation架構-常用類-NSValue

來源:互聯網
上載者:User

標籤:

  NSNumber是NSValue的子類,前者只能封裝數字,後者可以封裝任意值。NSArray、NSDictionary只能儲存OC對象,不能儲存結構體。因此,如果想要在NSArray、NSDictionary裡放結構體,可以曲線救國,將結構體封裝成OC對象,再放到NSArray、NSDictionary等集合類中。

void value() {    CGPoint point = CGPointMake(10, 10);    // 將結構體變數封裝成一個對象    NSValue *value = [NSValue valueWithPoint:point];        NSMutableArray *array = [NSMutableArray array];    // 添加value    [array addObject:value];        // 取出當時放進去的value    NSValue *value1 = [array lastObject];    CGPoint point1 = [value1 pointValue];        BOOL result = CGPointEqualToPoint(point1, point);    NSLog(@"result=%i", result);}typedef struct {    int year;    int month;    int day;} Date;void value2() {    Date date = {2013, 4, 7};    // void *代表任何指標    // 這裡要傳結構體的地址&date        // 根據結構體類型產生 對應的 類型描述字串    char *type = @encode(Date);    NSValue *value = [NSValue value:&date withObjCType:type];            // 定義一個結構體變數    Date date1;        // 取出封裝好的結構體    [value getValue:&date1];        // [value objCType];  取出類型描述字串        NSLog(@"year=%i, month=%i, day=%i", date1.year, date1.month, date1.day);}

 

Objective-C:Foundation架構-常用類-NSValue

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.