文档章节

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

 明天过后1
发布于 2014/10/07 09:24
字数 1001
阅读 27
收藏 0
点赞 0
评论 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
博文 20
码字总数 36166
作品 0
佛山
foundation之结构体

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

DevShaw ⋅ 2016/01/07 ⋅ 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

五.Foundation框架(1)--NSSize   NSPoint   NSRange   NSRect 结构体

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

天宇逍遥heart ⋅ 2016/09/20 ⋅ 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

C/C++语言中闭包的探究及比较

这里主要讨论的是C语言的扩展特性block。该特性是Apple为C、C++、Objective-C增加的扩展,让这些语言可以用类Lambda表达式的语法来创建闭包。前段时间,在对CoreData存取进行封装时(让开发人...

TomShine ⋅ 2012/12/27 ⋅ 0

【备忘】2017年黑马【淘宝店铺装修实战操作视频】全套无加密

2017年黑马【淘宝店铺装修实战操作视频】全套无加密 简介: 淘宝装修,对于一个好的店铺来讲,是至关重要的,因为客户只能从网上的文字和图片来了解您,了解产品,所以做得好能增加用户的信任...

qq_38155396 ⋅ 2017/07/01 ⋅ 0

开发者应关注的Visual Studio 11新特性(组图)

导读:本周,微软Build大会在美国加州阿纳海姆正式开幕。除了Windows 8的最新消息,微软还在本次大会上介绍了在开发工具方面的最新进展:Visual Studio 11和Team Foundation Server 11。 据悉...

sevens2008 ⋅ 2011/09/16 ⋅ 14

黑马程序员.bobo.DAY.3

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

snow_it_bobo ⋅ 2015/05/14 ⋅ 0

vs2011 新特性

据悉,Visual Studio 2011预览版提供了用HTML5、JavaScript、C#、Visual Basic和C++的语言开发Windows 8 Metro应用程序的工具,包括代码解析和检查工具。本次大会上,微软演示了一款可视化编...

Matrix4X4 ⋅ 2012/03/02 ⋅ 0

iOS引用转换:Foundation与Core Foundation对象互相转换(__CFNSString转NSString,void *转id等等)

1. 两个框架的基本知识 1.1 Foundation 框架名是,在Xcode新建工程时可以选择导入(其实会默认自动依赖好)。Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组,...

陈满iOS ⋅ 05/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

对于程序员的招聘问题,作为软件人的一些吐槽和建议

作为软件人,找工作有时候似乎挺苦逼的。 说真的,让我去掉前面这句中“似乎”二字吧。就是苦逼!很多人都曾抱怨处在招聘的一方很糟糕——我们没有任何可靠的方式来甄别会写代码并且写得好的...

老道士 ⋅ 28分钟前 ⋅ 0

HDFS原理学习

一、概述 1、 Hadoop整合了众多的文件系统,首先提供了一个高层的文件系统抽象org.apache.hadoop.fs.FileSystem。然后有各个文件系统的实现类。 2、Hadoop是JAVA编写的,不同文件系统之间的交...

cjxcloud ⋅ 32分钟前 ⋅ 0

Linux下MySQL表名不区分大小写的设置方法(抄袭别人的)

Linux下MySQL表名不区分大小写的设置方法 MySQL表名不区分大小写的设置方法 在用centox安装mysql后,把项目的数据库移植了过去,发现一些表的数据查不到,排查了一下问题,最后发现是表名的大...

随风而浮沉 ⋅ 37分钟前 ⋅ 0

ubuntu下安装宋体simsun

sudo cp simsun.ttc /usr/share/fonts cd /usr/share/fonts sudo chmod 644 simsun.ttc 更新字体缓存: 代码: sudo mkfontscale 代码: sudo mkfontdir 代码: sudo fc-cache -fsv 安装chrome扩......

wangxuwei ⋅ 38分钟前 ⋅ 0

利用 ssh 传输文件

Linux 下一般可以用 scp 命令通过 ssh 传送文件: #把服务器上的 /home/user/a.txt 发送到本机的 /var/www/local_dir 目录下scp username@servername:/home/user/a.txt /var/www/local_dir...

大灰狼时间 ⋅ 49分钟前 ⋅ 0

web3j教程:android和java程序员如何使用web3j开发区块链以太坊

如何使用web3j为Java应用或Android App增加以太坊区块链支持,本教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤...

智能合约 ⋅ 今天 ⋅ 0

web3j开发java或android以太坊智能合约快速入门

web3j简介 web3j是一个轻量级、高度模块化、响应式、类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成。 可以通过它进行以太坊区块链...

笔阁 ⋅ 今天 ⋅ 0

一起读书《深入浅出nodejs》-异步I/O

异步I/O “异步”这个名词其实很早就诞生了,但它大规模流行却是在Web 2.0浪潮中,它伴随着AJAX的第一个A(Asynchronous)席卷了Web。 为什么要异步I/O 关于异步I/O为何在Node里如此重要,这与...

小草先森 ⋅ 今天 ⋅ 0

JVM各种问题

1、如果启动什么都不设,会怎样? 先来看一个命令 [root@localhost bin]# java -XX:+PrintCommandLineFlags -version -XX:InitialHeapSize=29899008 -XX:MaxHeapSize=478384128 -XX:+PrintCo......

算法之名 ⋅ 今天 ⋅ 0

SAS笔记-宏2

宏是一种文本,一般来说其编译是在程序执行之前。 宏变量的创建 %let语句 %let macro_variables = text; %let是常见的宏变量建立方式,其编译就在执行前。如下例中,想要宏变量test等于数据集...

tonorth123 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部