麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

IOS-Foundation里常用的結構體:

2019-11-14 19:29:05
字體:
來源:轉載
供稿:網友

在Foundation中定義了很多常用結構體類型來簡化我們的日常開發(fā)

NSRange(location length)用來表示范圍,分多種情況

NSPoint / CGPoint(開發(fā)中常用后者)

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;

繼續(xù)查看:

 typedef CGFLOAT_TYPE CGFloat;

繼續(xù)查看:

#define CGFLOAT_TYPE double

本質就是 double 類型

類似 NSRange 結構體

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

 

NSSize / CGSize

表示高度,寬度尺寸的結構體,聯(lián)想記憶。

    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方法進行創(chuàng)建,這也是我們日后比較常用的操作;

而且與之對應的還都有一個NSStringFromXX方法來進行字符串轉換,方便我們調試。上面也提到NSSize其實就是CGSize,NSRect其實就是CGRect。

注意:

UI是iOS的UI庫,用objective-c封裝的
NS是objc的基礎庫
CG,CF等是比較底層的C語言的庫
可以理解UIFont就是用objc封裝過的CGFont,用起來方便些


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久久www成人免费精品 | 精品中文视频 | 久久99国产精品视频 | 一级免费特黄视频 | 九九热精品视频在线 | 中文字幕观看 | 九九热精彩视频 | 免费国产网站 | 欧美成人精品一区二区三区 | 亚洲一级成人 | 国产精品视频专区 | 女人叉开腿让男人桶 | 欧美成人一级 | 国产精品久久久久久久久粉嫩 | 国产羞羞视频在线观看免费应用 | 欧美日韩国产成人在线观看 | 精品国产一区二区三区久久久 | 欧美精品一区二区三区在线 | 久久99久久98精品免观看软件 | 免费黄色小网站 | 亚洲精品成人久久 | 亚洲精品午夜在线 | 激情在线视频 | 暴力肉体进入hdxxxx古装 | 亚洲第一成人久久网站 | 毛片在线免费 | 亚洲福利在线视频 | www69xxxxx| 国产一区二区三区视频观看 | 激情黄页 | 亚洲网站一区 | 成人在线观看免费观看 | 久久久无码精品亚洲日韩按摩 | 激情视频在线播放 | a集毛片 | 免费看欧美一级特黄a大片 久久免费视频一区二区三区 | 欧美一级片一区 | 亚洲成人激情在线 | 污黄视频在线播放 | av7777777| 久色精品 |