文档章节

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

 明天过后1
发布于 2014/10/07 09:24
字数 1001
阅读 28
收藏 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
佛山
私信 提问
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
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
黑马程序员.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

没有更多内容

加载失败,请刷新页面

加载更多

大数据教程(7.6)shell脚本定时采集日志数据到hdfs

上一篇博客博主分享了hadoop内置rpc的使用案例,本节博主将为小伙伴们分享一个在实际生产中使用的日志搜集案例。前面的文章我们有讲到过用户点击流日志分析的流程,本节就是要完成这个分析流...

em_aaron
21分钟前
1
0
wave和pcm互转

wav->pcm pcm->wav c#代码: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.IO;using Sys......

whoisliang
23分钟前
1
0
Win10:默认的图片打开应用,打开图片时速度明显很慢的解决办法

首先,我们随便地打开一张图片。然后,点击右上角的三个小点,最后点击弹出菜单最下面的“设置”。如下图: 在“设置”中找到下面的“人物”,把它关掉就好了。 原来,默认情况下,Win 10的图...

LivingInFHL
今天
3
0
js代码激发onchange事件,兼容谷歌火狐IE

var el = document.getElementsByName('role')[0]; el.value = '3'; var evt = document.createEvent("HTMLEvents"); evt.initEvent("change", false, true); el.dispatchEvent(evt);......

我退而结网
今天
4
0
mysql客户端报错:libmysqlclient_16 not defined in file libmysqlclient.so.16

报错情况: 安装完mydumper之后(上一篇文章),登陆Mysql客户端报错:version libmysqlclient_16 not defined in file libmysqlclient.so.16 with link time reference 同样:mysql的其他客...

machogyb
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部