• Objective-C:Foundation框架-结构体


      在Foundation中定义了很多常用结构体类型来简化我们的日常开发,这些结构体完全采用Objective-C定义,和我们自己定义的结构体没有任何区别,之所以由框架为我们提供完全是为了简化我们的开发。常用的结构体有NSRange、NSPoint、NSSize、NSRect等。

      先复习下结构体的两种定义方式:

    void test() {
        // 定义了Date这种结构体类型
        struct Date {
            int year;
            int month;
            int day;
        };
        
        // 定义结构体变量
        struct Date d = {2013, 4, 5};
        d.day = 6;
    }
    
    void test1() {
        typedef struct Date {
            int year;
            int month;
            int day;
        } MyDate;
        
        MyDate d = {2013, 4, 5};
    }

    1.NSRange

    这个结构体用来表示一个事物的范围,通常是字符串里的字符范围或者集合里的元素范围。通常有三种方式创建NSRange变量。

    • 第一种:直接给成员赋值

    NSRange range;

    range.location = 2;

    range.length = 5;

    • 第二种:应用C语言的聚合结构赋值机制

    NSRange range = {2, 5};

    或者,

    NSRange range = {.location = 2, .length = 3};

    • 第三种:Foundation框架提供的一个快捷函数NSMakeRange(推荐使用)
    void range() {
        NSRange range = NSMakeRange(8, 10);
        
        NSLog(@"location:%zi", range.location);
        NSLog(@"length:%zi", range.length);
        
        NSString *str =  NSStringFromRange(range);
        NSLog(@"%@", str);
        // NSLog(@"%@", range); 错误的做法,%@代表着OC对象
    }

    备注:OC中的方法和函数略有区别:方法是要通过类名(+)或对象(-)来调用的。

    2.NSPoint

    NSPoint和CGPoint是等价的,表示平面中的一个点。其创建方法与NSRange类似:

    void point() {    
        // NSPoint p;
        CGPoint p;
        p.x = 1;
        p.y = 10;
        
        p = NSMakePoint(10, 9);
        
        // 常见的方式
        p = CGPointMake(8, 9);
        
        NSString *str = NSStringFromPoint(p);
        NSLog(@"%@", str);
    }

    3.NSSize

    NSSize和CGSize等价,用来存储宽度和高度。其创建方式类似:

    void size() {
        CGSize size; // NSSize size;
        size.width = 100;
        size.height = 90;
        
        size = NSMakeSize(90, 80);
        
        size = CGSizeMake(10, 8);
        
        NSString *str = NSStringFromSize(size);
        NSLog(@"%@", str);
    }

    4.NSRect

    NSRect与CGRect等价,用来存储矩形,其内部又包含了两个结构体:CGPoint和CGSize。其创建方式类似:

    void rect() {
        NSRect rect; // CGRect rect;
        rect.origin.x = 10;
        rect.origin.y = 11;
        
        rect.size.width = 100;
        rect.size.height = 90;
        
        rect = NSMakeRect(10, 10, 80, 80);
        
        rect = CGRectMake(8, 9, 10, 90);
        
        NSString *str = NSStringFromRect(rect);
        NSLog(@"%@", str);
    }
  • 相关阅读:
    今天下午去了佛山梁园——广东四大名园之一
    我眼中的Web2.0
    《花眼》观后感
    Implement SOAP services with the Zend Framework
    js 捕捉右键事件
    Zend Framework 第九节数据库操作学习总结
    PHP :time(),date(),mktime()日期与时间函数库{经常会忘却掉}
    zend_soap 实现 web service 用户验证
    php中DOMDocument简单用法(XML创建、添加、删除、修改)
    jquery 判断浏览器方法
  • 原文地址:https://www.cnblogs.com/yif1991/p/5066606.html
Copyright © 2020-2023  润新知