文档章节

黑马程序员-11-Foundation(常用的结构体)

 明天过后1
发布于 2014/10/07 09:24
字数 1001
阅读 27
收藏 0

---------------------- Java培训.Net培训Android培训IOS培训、期待与您交流! ----------------------

1. Foundtaion 框架简介

    创建一个OC对象我们必须继承 NSObject, 而NSObject是依赖于Foundation框架的,除此之外框架中由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,方便我们开发;而且开发中常用到的对象集合,如数组、字典、集合;其他功能包括内存管理,处理基础文件系统、存储对象等,因此Foundation框架是IOS开发中必不可少的基础框架之一。


2. Foundation常用的结构体

   常用的结构体 :

         NSRange(location length)

         NSPoint\CGPoint

         NSSize\CGSize

         NSRect\CGRect (CGPint CGSize)

    a. NSRange

        (1) NSRange的原型 : 

    typedef struct _NSRange {
        NSUInteger location;                            // 存储元素的位置
        NSUInteger length;                              // 描述元素的长度
    } NSRange;

        (2) NSRange的初始化方式 : 

    #import <Foundation/Foundation.h>
    
    int main()
    {
        /* 使用C语言的结构体初始化方式,但在OC开发中一般不用
        NSRange r1 = {2,4};
        NSRange r2 = {.length = 4, .location = 2};
        */
        NSRange r3 = NSMakeRange(2,4);                    // 开发中一般使用这种方式
        return 0;
    }

        (3) 使用例子 :

    #import <Foundation/Foundation.h>
    /* 
    查找某个字符串在str中的范围
    如果找到使用NSRange来表示他的存储位置和长度
    如果找不到,length=0,location=NSNotFound==-1
    - (NSRange)rangeOfString:(NSString *)aString;
    */
    int main()
    {
        NSSting *str = @"hello oc";
        NSRange r = [str rangeOfString:@"java"];
        
        NSLog(@"location = %ld , length = %ld",r.location,r.length);                //  location = -1 , length = 0
        return 0;
    }

    b. NSPoint\CGPoint

        (1) NSPoint\CGPoint原型 : 

     // CGPoint
     struct CGPoint {
      CGFloat x;
      CGFloat y;
    };
    typedef struct CGPoint CGPoint; 
    
    // NSPoint
     typedef CGPoint NSPoint ;

        (2) NSPoint\CGPoint的初始化方式 : 

    #import <Foundation/Foundation.h>
    
    int main()
    {
        /* 使用C语言的结构体初始化方式,但在OC开发中一般不用
        NSPoint p1 = {2,4};
        // CGPoint p1 = {2,4};
        
        NSPoint p2 = {.y= 4, .x = 2};
        // CGPoint p2 = {.y= 4, .x = 2};
        */
        
        CGPoint p3 = CGPointMake(2,4);                                                        // 开发中一般使用这种方式
        // NSPoint p3 = NSMakeNSPoint(2,4);
        return 0;
    }

        (3) 使用例子 :

    #import <Foundation/Foundation.h>
    
    // 使用这些CGPointEqualToPoint、CGPointZero的前提是添加CoreGraphics框架
    #import <CoreGraphics/CoreGraphics.h> 
    
    int main()
    {
        // 比较两个点是否重合
        BOOL b = CGPointEqualToPoint(CGPointMake(10,20),CGPointMake(10,20));                        // b = YES
        
        // 表示原点
        // CGPointZero == CGPointMake(0,0)
        BOOL b = CGPointEqualToPoint(CGPointZero ,CGPointMake(0,0));                                // b = YES
        
        // 将结构体转化为字符串
        NSString *str = NSStringFromPoint(CGPointMake(10,20));
        NSLog(@"p = %@",str);                                                                       //  p = {10, 20} 
        return 0;
    }


    c. NSSize\CGSize

        (1) NSSize\CGSize 原型 : 

     // CGSize 
     struct CGSize {
      CGFloat width;
      CGFloat height;
    };
    typedef struct CGSize CGSize;
    
    // NSSize
    typedef CGSize NSSize;

        (2) NSSize\CGSize 的初始化方式 : 

    #import <Foundation/Foundation.h>
    
    int main()
    {
        NSSize s1 = CGSizeMake(100, 50);                                                           // 开发中一般使用这种 
        NSSize s2 = NSMakeSize(100, 50);
        CGSize s3 = NSMakeSize(200, 60);
        return 0;
    }

        (3) 使用例子 :

    #import <Foundation/Foundation.h>
    
    // 使用这些CGSizeEqualToSize的前提是添加CoreGraphics框架
    #import <CoreGraphics/CoreGraphics.h> 
    
    int main()
    {
        BOOL b = CGSizeEqualToSize(CGSizeMake(100,200),CGSizeMake(100,200));                       // b = YES
        NSSize s = CGSizeMake(100,200);
        NSString *str = NSStringFromSize(s);
        NSLog(@"size : %@",s);                                                                    // size : {100, 200}
        return 0;
    }

    d. NSPoint\CGPoint

        (1) NSPoint\CGPoint原型 : 

     // CGPoint
     struct CGPoint {
      CGFloat x;
      CGFloat y;
    };
    typedef struct CGPoint CGPoint; 
    
    // NSPoint
     typedef CGPoint NSPoint ;

        (2) NSPoint\CGPoint的初始化方式 : 

    #import <Foundation/Foundation.h>
    
    int main()
    {
        /* 使用C语言的结构体初始化方式,但在OC开发中一般不用
        NSPoint p1 = {2,4};
        // CGPoint p1 = {2,4};
        
        NSPoint p2 = {.y= 4, .x = 2};
        // CGPoint p2 = {.y= 4, .x = 2};
        */
        
        CGPoint p3 = CGPointMake(2,4);                                                        // 开发中一般使用这种方式
        // NSPoint p3 = NSMakeNSPoint(2,4);
        return 0;
    }

        (3) 使用例子 :

    #import <Foundation/Foundation.h>
    
    // 使用这些CGPointEqualToPoint、CGPointZero的前提是添加CoreGraphics框架
    #import <CoreGraphics/CoreGraphics.h> 
    
    int main()
    {
        // 比较两个点是否重合
        BOOL b = CGPointEqualToPoint(CGPointMake(10,20),CGPointMake(10,20));                        // b = YES
        
        // 表示原点
        // CGPointZero == CGPointMake(0,0)
        BOOL b = CGPointEqualToPoint(CGPointZero ,CGPointMake(0,0));                                // b = YES
        
        // 将结构体转化为字符串
        NSString *str = NSStringFromPoint(CGPointMake(10,20));
        NSLog(@"p = %@",str);                                                                       //  p = {10, 20} 
        return 0;
    }


    e. NSRect\CGRect

        (1) NSRect\CGRect 原型 : 

     // CGRect 
    struct CGRect {
      CGPoint origin;
      CGSize size;
    };
    typedef struct CGRect CGRect; 
    
    // NSRect
    typedef CGRect NSRect;

        (2) NSRect\CGRect 的初始化方式 : 

    #import <Foundation/Foundation.h>
    
    int main()
    {
         // 两个对焦点确定一个矩形
        CGRect r1 = NSMakeRect(0, 0, 10, 20);
    
        NSRect r2 = CGRectMake(0, 0, 10, 20);                                                         // 开发中一般使用这种方式
        return 0;
    }

        (3) 使用例子 :

    #import <Foundation/Foundation.h>
    
    // 使用这些CGSizeEqualToSize的前提是添加CoreGraphics框架
    #import <CoreGraphics/CoreGraphics.h> 
    
    int main()
    {
        NSRect r2 = CGRectMake(0, 0, 10, 20);
        NSString *str = NSStringFromRect(r1);
        NSLog(@"rect = %@",str);                                                                 //  rect = {{0, 0}, {10, 20}} 
        return 0;
    }


---------------------- Java培训.Net培训Android培训IOS培训、期待与您交流! ---------------------- 

 详情请查看:http://edu.csdn.net/heima



© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 23
码字总数 36166
作品 0
佛山
foundation之结构体

一、基本知识 Foundation—基础框架。框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础。 如果要想使用foundation框架中的数据类型,那么包含它的主头文件...

DevShaw
2016/01/07
11
0
OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

前一篇说到了Foundation框架中的NSDirctionary类:http://blog.csdn.net/jiangwei0910410003/article/details/41830179,这一一篇来看一下Foundation的其他常用的类:NSNumber,NSDate,NSExc...

jiangwei0910410003
2014/12/10
0
0
五.Foundation框架(1)--NSSize   NSPoint   NSRange   NSRect 结构体

在讲述框架之前,我们可以想象一个问题,那就是为什么我们每次创建文件的时候,都去选择Cocoa Class或者Cocoa Touch Class 尼? Cocoa 是什么? ocoa不是一种编程语言(它可以运行多种编程语言...

天宇逍遥heart
2016/09/20
6
0
JavaWeb01-HTML篇笔记(一)

1.1 案例一:网站信息页面的显示:1.1.1 需求: 在网页中显示网站的信息的页面:效果如下: 1.1.2 分析:1.1.2.1 技术分析: 【HTML的概述】 Ø 什么是HTML HTML:Hyper Text Markup Language ...

我是小谷粒
04/25
0
0
黑马程序员.bobo.DAY.3

while语句格式:while (条件表达式){执行语句;} do{执行语句;}while(条件表达式); for (int x = 0; x<3;x++){System.out.println("x="+x);//3 6} //在这里离开了大括号,x不存在的,注意(条件表...

BobbyLou
2015/05/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Delphi 常用API 函数(好多都没见过)

AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 AnyPopup 判断屏幕上是否存在任何弹出式窗口 ArrangeIconicWindows 排列一个父窗口的最小化子窗口 AttachThread...

dillonxiao
33分钟前
1
0
阿里云ubuntu配置Android开发环境编译Apk

1.命令行下载Android SDK $ wget https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz $ tar zxvf android-sdk_r24.4.1-linux.tgz 2.列出可以现在的SDK ./android list sdk  -a 3......

SuShine
34分钟前
1
0
maven导出项目依赖的jar包

一、导出到默认目录 targed/dependency 从Maven项目中导出项目依赖的jar包:进入工程pom.xml 所在的目录下,执行如下命令: mvn dependency:copy-dependencies 二、导出到自定义目录中 在mav...

来来来来来
34分钟前
1
0
Win10下React Native环境安装教程及错误处理办法(实测)

https://blog.csdn.net/zhangatle/article/details/53289471 准备工作 注意:小米手机MIUI有坑,文末有解决方法 1 首先,你需要先安装Node.js并进行环境变量的配置,具体可以参考我的另一篇文...

james_laughing
34分钟前
1
0
IDEA2018 Mybatis plugin破解

IDEA2018 Mybatis plugin破解 Mybatis Plugin 一、Mybatis Plugin插件是什么 提供Mapper接口与配置文件中对应SQL的导航 编辑XML文件时自动补全 根据Mapper接口, 使用快捷键生成xml文件及SQL...

DemonsI
35分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部