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”可以用location为7,length为3的范围来表示
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(90, 80); size = CGSizeMake(10, 8);
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; } |
相关推荐
#### 常用结构体 Foundation框架中包含了一些常用的结构体,这些结构体主要用于表示不同类型的数据。例如: - **NSRange**: 表示范围,常用于字符串操作中的子字符串提取。 - **CGSize**: 表示大小,由宽度和高度...
#### 1. Swift与Objective-C的区别 - **语法差异**:Swift 是一种更现代的语言,拥有许多新特性,如类型推断、模式匹配等。 - **内存管理**:Swift 使用自动引用计数 (ARC) 进行内存管理,而 Objective-C 也支持 ARC...
5. 题目2-60:这个程序涉及到结构体(`struct`)的使用,用于存储学生的信息(包括学号、姓名和四个科目的成绩)。程序还实现了对学生信息的输入、平均分计算以及按平均分降序排序。这展示了结构体的定义、动态内存...
### 1. Runloop - **概念**:RunLoop是iOS中用于管理线程执行的一个核心组件。它可以确保在没有任务时线程不会被挂起,并在有任务时能及时处理。 - **用途**:RunLoop主要用于管理事件循环,包括但不限于处理用户...
#### 1. C# 基础语法 - **数据类型与变量**:包括基本数据类型如int, float, double, char以及复杂类型如类和结构体。 - **控制流语句**:如if-else条件语句、for和foreach循环、while和do-while循环。 - **方法和...
例如,假设我们有一个名为`MyStruct`的结构体,包含两个成员:int类型的`value1`和字符串类型的`value2`,那么可以这样声明: ```cpp BEGIN_DISPATCH_MAP(CMyActiveXCtrl, COleControl) DISP_FUNCTION_ID...
- 常用框架(如UIKit、Foundation等)的使用方法。 - ARC(Automatic Reference Counting)自动引用计数机制。 #### 6. KVO-KVC - **重要性**:KVO(Key-Value Observing)和KVC(Key-Value Coding)是Objective-C中...
第 1 章 绪 论....................................................................................................................1 § 1.1 关于 EDA.........................................................
- **多类型格式化输出**:`NSLog`函数支持同时输出不同类型的数据,通过格式化字符串指定每个变量的类型,例如:`NSLog(@"Name: %@, Age: %d, Weight: %.1f, Height: %.1f, Gender: %c", name, age, weight, height,...
MFC(Microsoft Foundation Classes)是微软提供的一个基于Win32 API的C++类库,主要用于简化Windows应用程序开发过程中的复杂性。它提供了大量封装好的类,使得开发者能够更加专注于业务逻辑的实现,而不是底层API...
#### 十一、Foundation 常用结构体与集合 - **结构体**: - NSRange:表示范围。 - NSPoint/CGPoint:表示点坐标。 - NSSize/CGSize:表示尺寸大小。 - NSRect/CGRect:表示矩形区域。 - **数组**: - 不可...
2. **CoreFoundation框架**: - 提供跨平台的底层服务和支持。 3. **CoreGraphics框架**: - 用于图形绘制。 4. **AppKit/UIKit**: - 分别针对macOS和iOS提供用户界面组件和事件处理机制。 #### 六、Xcode...
5. Foundation框架:了解Objective-C语言的同时,也需要熟悉Cocoa的Foundation框架,这是一个丰富的类库,提供了大量的数据类型和功能,包括字符串操作、集合操作(数组、字典、集合等)、日期和时间处理、文件操作...
- **第13章:使用Microsoft Foundation Classes (MFC) 进行Windows编程** - 介绍MFC的基本架构和类层次结构。 - 讲解文档/视图体系结构的实现。 - **第14章:使用菜单和工具栏** - 讲解菜单和工具栏的创建方法...
2. 对于大部分字符,使用2个字节来表示,第一个字节在0xA1-0xFE之间,第二个字节也在0xA1-0xFE之间。 3. 包含完整的平假名、片假名和常用汉字,以及一些特殊符号。 OSF JVC的转换规范可能涵盖以下内容: 1. 如何将...
`CStringArray` 是 MFC(Microsoft Foundation Classes)中的一个类,用于存储和管理一组 `CString` 对象。`CString` 是 MFC 提供的一个字符串类,它封装了 C 风格字符串的各种操作,并提供了很多方便的方法来处理...
MFC 是 Microsoft Foundation Classes 的缩写,它是一种 C++ 库。消息映射是 MFC 中的一种机制,它将消息与对象相关联。在本题中,选项 C 是正确的,因为消息映射是通过宏来建立的。 1.18 图像存储 图像是一种数据...
这些知识点覆盖了Objective-C的基本概念、语法结构以及常用的数据类型,对于初学者来说是非常宝贵的资源。通过对这些概念的理解和实践,开发者可以更好地掌握Objective-C语言,进而开发出高质量的应用程序。
在图像处理领域,VC++(Microsoft Visual C++)是一种常用的编程环境,因为它提供了强大的Windows API支持和丰富的库,如MFC(Microsoft Foundation Classes)和OpenCV等,用于开发图像处理应用。本文将深入探讨在...
2. **类与结构体(第23章)** - 介绍了类和结构体的区别。 - 包括如何定义类和结构体。 - 探讨了如何使用它们来封装数据和行为。 3. **命名空间(第24章)** - 解释了命名空间的作用。 - 包括如何定义和使用...