`
JavaZhuang
  • 浏览: 10287 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

5 2.Foundation1-常用结构体

    博客分类:
  • IOS
 
阅读更多

5 2.Foundation1-常用结构体

 

NSRange

1)、在Foundation/NSRange.h中对NSRanger的定义

         Typedef  struct  _NSRange{

                   NSUInteger  location;

                   NSUInteger  length;

}  NSRange;

//typedef unsigned long NSUInteger

 

2)、这个结构体用来表示事物的一个范围,通常是字符串里的字符范围或者集合里的元素范围。

3)location表示该范围的起始位置

4)length表示该范围内所含的元素个数

5)、比如“I  love  objective-c”中的“obj”可以用location7length3的范围来表示

6)

 

 

列一:

main.m

 //

//  main.m

//  Foundation1 - 结构体

//

//  Created by qwz on 13-12-9.

//  Copyright (c) 2013 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

void test(){

    //定义了Date这个结构体类型

    struct Date{

        int year;

        int month;

        int day;

    };

    //定义结构变量

    struct Date d = {2013, 4, 5};

    d.day = 6;

}

 

void test1(){

    typedefstruct Date{

        int year;

        int month;

        int day;

    } myDate;

    

    myDate d = {2013, 4, 5};

}

 

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对象

}

 

int main(int argc, const char * argv[])

{

    

    @autoreleasepool {

        range();

    }

    return 0;

}

 

运行结果:

2013-12-11 09:37:48.757 OC10-内存管理2-set方法的内存管理[319:403] location:8

2013-12-11 09:37:48.762 OC10-内存管理2-set方法的内存管理[319:403] length:10

2013-12-11 09:37:48.763 OC10-内存管理2-set方法的内存管理[319:403] {8, 10}

 

 

 NSPoint

1)、在Foundation/NSGeometry.h中对NSPoint的定义 typedef  CGPoint  NSPoint;

2)、在CoreGraphics/CGGeometry.h中对CGPoint的相关定义

Struct  CGPoint{

         CGFloat  x;

         CGFloat  y;

};

Typedef  struct  CGPoint  CGPoint;

// #define  CGFLOAT_TYPE  double

// typedef  CGFLOAT_TYPE  CGFloat;

3)NSPoint CGPoint是等价的

4)、这个结构体代表的是平面中的一个点(x, y)

列二:

main.m

 //

//  main.m

//  Foundation1 - 结构体

//

//  Created by qwz on 13-12-9.

//  Copyright (c) 2013 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

 

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);

}

 

int main(int argc, const char * argv[])

{

    

    @autoreleasepool 

        point();

    }

    return 0;

}

 

 

 

NSSize

1)、在Foundation/NSGeometry.h中对NSSize的定义 typedef CGSize NSSize

2)、在CoreGraphics/CGGeometry.h中对CGSize的相关定义

 

3)、这个结构体用来存储宽度和高度

4)、可以利用NSMakeSize()CGSizeMake()创建CGSize

例三:

 

 main.m

 //

//  main.m

//  Foundation1 - 结构体

//

//  Created by qwz on 13-12-9.

//  Copyright (c) 2013年 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

void size(){

    NSSize size;

    size.width = 100;

    size.height = 90;

    

    size = NSMakeSize(9080);

    size = CGSizeMake(108);

    

    NSString *str = NSStringFromSize(size);

    NSLog(@"%@", str);

    

}

 

int main(int argc, const char * argv[])

{

    

    @autoreleasepool {

        size();

    }

    return 0;

}

 

 

NSRect

 

1) Foundation/NSGeometry.h中对NSRect的定义 typedef  CGRect  NSRect;

 

2) CoreGraphics/CGGeometry.h中对CGRect的相关定义

 

Struct  CGRect{

 

         CGPoint  origin; //矩形左上角坐标

 

         CGSize   size; //矩形的宽度和高度

 

};

 

typedef  struct  CGRect  CGRect;

 

3) 这个结构体用来存储宽度和高度

 

4)可以利用NSMakeRect() CGRectMake() 创建CGRect

 

 main.m

 //

//  main.m

//  Foundation1 - 结构体

//

//  Created by qwz on 13-12-9.

//  Copyright (c) 2013年 renhe. All rights reserved.

//

#import <Foundation/Foundation.h>

 

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, 12);

    

    NSString *str = NSStringFromRect(rect);

    NSLog(@"%@", str);

    

}

 

int main(int argc, const char * argv[])

{

    @autoreleasepool {

        rect();

    }

    return 0;

}

 

 

 

分享到:
评论

相关推荐

    IOS开发系列—Objective-C之Foundation框架 - KenshinCui - 博客园.pdf

    #### 常用结构体 Foundation框架中包含了一些常用的结构体,这些结构体主要用于表示不同类型的数据。例如: - **NSRange**: 表示范围,常用于字符串操作中的子字符串提取。 - **CGSize**: 表示大小,由宽度和高度...

    IOS面试题2018总结188题

    #### 1. Swift与Objective-C的区别 - **语法差异**:Swift 是一种更现代的语言,拥有许多新特性,如类型推断、模式匹配等。 - **内存管理**:Swift 使用自动引用计数 (ARC) 进行内存管理,而 Objective-C 也支持 ARC...

    c++mfc答案

    5. 题目2-60:这个程序涉及到结构体(`struct`)的使用,用于存储学生的信息(包括学号、姓名和四个科目的成绩)。程序还实现了对学生信息的输入、平均分计算以及按平均分降序排序。这展示了结构体的定义、动态内存...

    招人心得iOS47道面试题

    ### 1. Runloop - **概念**:RunLoop是iOS中用于管理线程执行的一个核心组件。它可以确保在没有任务时线程不会被挂起,并在有任务时能及时处理。 - **用途**:RunLoop主要用于管理事件循环,包括但不限于处理用户...

    C#开发实战(30章+附录).pdf

    #### 1. C# 基础语法 - **数据类型与变量**:包括基本数据类型如int, float, double, char以及复杂类型如类和结构体。 - **控制流语句**:如if-else条件语句、for和foreach循环、while和do-while循环。 - **方法和...

    mfc ActiveX 结构体数组的传递

    例如,假设我们有一个名为`MyStruct`的结构体,包含两个成员:int类型的`value1`和字符串类型的`value2`,那么可以这样声明: ```cpp BEGIN_DISPATCH_MAP(CMyActiveXCtrl, COleControl) DISP_FUNCTION_ID...

    iOS面试题经典汇总

    - 常用框架(如UIKit、Foundation等)的使用方法。 - ARC(Automatic Reference Counting)自动引用计数机制。 #### 6. KVO-KVC - **重要性**:KVO(Key-Value Observing)和KVC(Key-Value Coding)是Objective-C中...

    VHDL实用教程[完整版]_潘松_PDF高清+word文档

    第 1 章 绪 论....................................................................................................................1 § 1.1 关于 EDA.........................................................

    Object-C语言教程&案例.docx

    - **多类型格式化输出**:`NSLog`函数支持同时输出不同类型的数据,通过格式化字符串指定每个变量的类型,例如:`NSLog(@"Name: %@, Age: %d, Weight: %.1f, Height: %.1f, Gender: %c", name, age, weight, height,...

    mfc文档——介绍mfc

    MFC(Microsoft Foundation Classes)是微软提供的一个基于Win32 API的C++类库,主要用于简化Windows应用程序开发过程中的复杂性。它提供了大量封装好的类,使得开发者能够更加专注于业务逻辑的实现,而不是底层API...

    Object-C学习大纲.pdf

    #### 十一、Foundation 常用结构体与集合 - **结构体**: - NSRange:表示范围。 - NSPoint/CGPoint:表示点坐标。 - NSSize/CGSize:表示尺寸大小。 - NSRect/CGRect:表示矩形区域。 - **数组**: - 不可...

    Objective-C基础教程.docx

    2. **CoreFoundation框架**: - 提供跨平台的底层服务和支持。 3. **CoreGraphics框架**: - 用于图形绘制。 4. **AppKit/UIKit**: - 分别针对macOS和iOS提供用户界面组件和事件处理机制。 #### 六、Xcode...

    Objective-C编程全解第三版

    5. Foundation框架:了解Objective-C语言的同时,也需要熟悉Cocoa的Foundation框架,这是一个丰富的类库,提供了大量的数据类型和功能,包括字符串操作、集合操作(数组、字典、集合等)、日期和时间处理、文件操作...

    Beginning Visual C++ 2008 by Ivor.Horton

    - **第13章:使用Microsoft Foundation Classes (MFC) 进行Windows编程** - 介绍MFC的基本架构和类层次结构。 - 讲解文档/视图体系结构的实现。 - **第14章:使用菜单和工具栏** - 讲解菜单和工具栏的创建方法...

    nls_euc-jp.rar_conversion

    2. 对于大部分字符,使用2个字节来表示,第一个字节在0xA1-0xFE之间,第二个字节也在0xA1-0xFE之间。 3. 包含完整的平假名、片假名和常用汉字,以及一些特殊符号。 OSF JVC的转换规范可能涵盖以下内容: 1. 如何将...

    CStringArray二维数组

    `CStringArray` 是 MFC(Microsoft Foundation Classes)中的一个类,用于存储和管理一组 `CString` 对象。`CString` 是 MFC 提供的一个字符串类,它封装了 C 风格字符串的各种操作,并提供了很多方便的方法来处理...

    奔图电子-软件笔试试题v1.1(C,C++工程师)_嵌入式-常用知识&面试题库_大厂面试真题.docx

    MFC 是 Microsoft Foundation Classes 的缩写,它是一种 C++ 库。消息映射是 MFC 中的一种机制,它将消息与对象相关联。在本题中,选项 C 是正确的,因为消息映射是通过宏来建立的。 1.18 图像存储 图像是一种数据...

    Objective-C Succinctly.pdf

    这些知识点覆盖了Objective-C的基本概念、语法结构以及常用的数据类型,对于初学者来说是非常宝贵的资源。通过对这些概念的理解和实践,开发者可以更好地掌握Objective-C语言,进而开发出高质量的应用程序。

    图像处理中的相关函数的VC++实现

    在图像处理领域,VC++(Microsoft Visual C++)是一种常用的编程环境,因为它提供了强大的Windows API支持和丰富的库,如MFC(Microsoft Foundation Classes)和OpenCV等,用于开发图像处理应用。本文将深入探讨在...

    Beginning Visual Basic 2012

    2. **类与结构体(第23章)** - 介绍了类和结构体的区别。 - 包括如何定义类和结构体。 - 探讨了如何使用它们来封装数据和行为。 3. **命名空间(第24章)** - 解释了命名空间的作用。 - 包括如何定义和使用...

Global site tag (gtag.js) - Google Analytics