IOS-Foundation 里常用的结构体:

在Foundation中定义了很多常用结构体类型来简化我们的日常开发

NSRange(location length)用来表示范围,分多种情况

NSPoint \ CGPoint(开发中常用后者)

NSSize \ CGSize

NSRect \ CGRect (CGPint CGSize)

NSRange原型

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

这是 NSRange 结构体的内部结构的形式,两个成员,一个长度,一个位置。不需要再和 c 一样使用 struct 关键字,且成员的数据类型是 NSUInteger

typedef unsigned long NSUInteger;

属于无符号长整型类型的替代写法,就知道它就是一个整型的正数而已。

使用 NSRange 结构体表示范围,比如:

    //{1, 2, 3, 4, 5}
    //表示3,4,5的范围,location=2,length=3

从0开始计数,第2个位置开始,长度为3。

字符串里 love 的范围,从0开始计数第2个位置,长度为4

@"i love oc";

下面这两种写法不推荐(前者可读性太差,后者太冗长)

//NSRange r1 = {2, 4}; // 不用
//NSRange r2 = {.location = 2, .length = 4};// 不用

要掌握下面这个写法,上面的两个不使用

NSRange r3 = NSMakeRange(2, 4); // 掌握

在工程中,经常用到的一个查找字符串位置的方法

    NSString *str = @"i love oc";

    // 查找某个字符串在str中的范围,很常用的一个方法,重要!
    // 如果找不到,length=0,location=NSNotFound==-1
    NSRange range = [str rangeOfString:@"java"];
    NSLog(@"loc = %ld, length=%ld", range.location, range.length);

因为,location 是无符号 long 类型,那么-1打印出来会是一个很大的正数。当然,如果最高位按照负数表示了,也就是NSNotFound按照(带符号)整数打印,那么就是-1。

NSPoint \ CGPoint

点结构体

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

还有:

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

继续查看:

 typedef CGFLOAT_TYPE CGFloat;

继续查看:

#define CGFLOAT_TYPE double

本质就是 double 类型

类似 NSRange 结构体

CGPoint p1 = NSMakePoint(10, 10);
NSPoint p2 = CGPointMake(20, 20);// 最常用

NSSize \ CGSize

表示高度,宽度尺寸的结构体,联想记忆。

    NSSize s1 = CGSizeMake(100, 50);
    NSSize s2 = NSMakeSize(100, 50);
    CGSize s3 = NSMakeSize(200, 60);

CGRect 表示矩形尺寸

    CGRect r1 = CGRectMake(0, 0, 100, 50);
    CGRect r2 = { {0, 0}, {100, 90}};
    CGRect r3 = {p1, s2};

可以看到对于常用结构体在Foundation框架中都有一个对应的make方法进行创建,这也是我们日后比较常用的操作;

而且与之对应的还都有一个NSStringFromXX方法来进行字符串转换,方便我们调试。上面也提到NSSize其实就是CGSize,NSRect其实就是CGRect。

注意:

UI是iOS的UI库,用objective-c封装的
NS是objc的基础库
CG,CF等是比较底层的C语言的库
可以理解UIFont就是用objc封装过的CGFont,用起来方便些

时间: 2024-10-09 18:24:09

IOS-Foundation 里常用的结构体:的相关文章

Foundation 框架中常用的结构体详解

Foundation 框架包含了很多开发常用的数据类型: Foundation中包含的数据类型: 结构体 枚举 类 要想使用 Foundation 中的数据类型,只要包含主头文件即可. #impot <Foundation/Foundation.h> 结构体: 我们常用的结构体有:NSRange.NSPoint (CGPint ).NSSize(CGSize).NSRect(CGRect) NSRange:是用来表示位置和范围的. 本质是: 1 typedef struct _NSRange

Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect

1   NSRange NSRange 的原型为 typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange; NSMakeRange的函数 NS_INLINEz是内联函数 typedef NSRange *NSRangePointer; NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) { NSRange r; r.locatio

iOS开发之oc(十六)--Foundation(1)结构体

(一)要掌握这些的运用 NSRange(location length) ---范围                                    range:范围 NSPoint\(相当于)CGPoint ---点 NSSize\CGSize   ---尺寸 NSRect\CGRect (CGPint CGSize) ---相当于一个矩形 其实,看官方文档更能清楚,这些的用法,需要声明方法就Jump to去看,在此,仅仅列出简单用法,作为了解 (二)代码示例 1. void range

黑马程序员_IOS开发_Objective-C学习笔记_Foundation框架常用的结构体

1.Foundation框架简介 1.1使用Foundation可以: *创建和管理集合,比如数组和字典 *访问存储在应用程序里的图片和其它资源 *创建和管理字符串 *提交和接收通知 *创建日期和时间对象 *自动发现IP网络上的设备 *操作URL流 *执行异步代码 注意:Foundation框架是默认导入的 所以不用刻意去导入 是必备的框架之一 1.2Foundation框架中一些经常接触到的结构体 由于Objective-C程序中 对象的结构体成员变量中的元素 不能通过对象直接来访问 所以我们

常用的结构体

// // main.m // 常用结构体 // #import <Foundation/Foundation.h> /* 常用结构体 1> 创建一个NSRange结构体,表示范围 2> NSSize等同于CGSize 有两个值组成 weight 表示宽度 height 表示高度 3> NSPoint等同于CGPoint 表示一个点的坐标位置 4> NSRect 等同于CGRect 表示一个矩形 */ int main(int argc, const char * ar

ios开发-CGRect,CGSize等结构体与NSString字符串互相转换

ios/oc中的结构体如何 转为  一个 NSString 方法呢? 或者一个字符串如何转换为 结构体呢? 系统已经为我们提供了很多好用的方法了! 此处列举一下: 结构体转字符串 NSString *NSStringFromCGPoint(CGPoint point); NSString *NSStringFromCGVector(CGVector vector); NSString *NSStringFromCGSize(CGSize size); NSString *NSStringFrom

小白学开发(iOS)OC_ 经常使用结构体(2015-08-14)

// //  main.m //  经常使用结构体 // //  Created by admin on 15/8/13. //  Copyright (c) 2015年 admin. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //      1. 表示范围:NSRange 结构体 NSRange r

在Golang里如何实现结构体成员指针到结构体自身指针的转换

原文地址:http://goworldgs.com/?p=37 在C语言中有一个经典的宏定义,可以将结构体struct内部的某个成员的指针转化为结构体自身的指针.下面是一个例子,通过FIELD_OFFSET宏计算结构体内一个字段的偏移,函数getT可以从一个F*的指针获得对应的T*对象. struct F { int c; int d; } struct T{ int a; int b; struct F f; } #define FIELD_OFFSET(type, field) ((int)

iOS中MVC常用的结构策略

模型 概念 专门用来存放数据的对象 特点 一般直接继承自NSObject 在.h文件中声明一些用来存放数据的属性 模型定义示例 @interface Shop : NSObject /** 名字 */ @property (nonatomic, strong) NSString *name; /** 图标 */ @property (nonatomic, strong) NSString *icon; @end 字典转模型示例 Shop *shop = [[Shop alloc] init];