中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Foundation框架(1)數值對象與結構體對象

發布時間:2020-08-22 13:51:18 來源:網絡 閱讀:293 作者:ymanmeng123 欄目:移動開發
  • Foundation框架

Foundation框架是所有iOS/MacOSX開發的基礎框架

最初版本由NextStep公司開發,故其前綴為NS

該框架中主要包含:

    基本數據類型

    常用函數

    結構體及相關操作函數

    枚舉類型

    功能豐富的類

頭文件:

@import <Foundation/Foundation.h>


  • 數值類型及數值對象

整型:

    類型:NSInteger、NSUInteger

    宏定義:NSIntegerMax、NSIntegerMin、NSUIntegerMax


浮點類型:(實型)

    類型:CGFloat

    宏定義:CGFLOAT_MAX、CGFLOAT_MIN

...

這些數值類型并不是Objective-C的對象,也就是說不能進行很多面向對象的操作


數值對象:

    NSNumber將各種數值類型數據封裝成Objective-C對象

字面值初始化:

    利用@關鍵字

NSNumber *num1 = @10;
NSNumber *num2 = @YES;
NSNumber *num3 = @'A';
NSNumber *num4 = @3.14;
int age = 10;
NSNumber *num5 = @(age);

數值對象的構造方法:

+ (NSNumber *)numberWithBool:(BOOL)value
+ (NSNumber *)numberWithChar:(char)value
+ (NSNumber *)numberWithDouble:(double)value
+ (NSNumber *)numberWithFloat:(float)value
+ (NSNumber *)numberWithInteger:(NSInteger)value
+ (NSNumber *)numberWithLong:(long)value
...


  • 幾何數據結構體

此部分介紹的結構體,不是類,用描述一些幾何數據


NSRange表示范圍:

typedef struct _NSRange {
    NSUInteger location;     //表示起始范圍
    NSUInteger length;       //表示范圍長度
} NSRange;
NSRange r1 = { 2, 4};        //不推薦
NSRange r2 = { .location=2, .length=4 }; //不推薦
NSRange r3 = NSMakeRange(2, 4);     //推薦使用這種方式


CGSize表示二維尺寸:

struct CGSize {
    CGFloat width;     //表示寬度
    CGFloat height;    //表示高度
};
typedef struct CGSize CGSize;
CGSize s1 = CGSizeMake(40, 60);
NSLog(@"%@", NSStringFromCGSize(s1));


CGPoint表示位置

struct CGPoint {
    CGFloat x;     CGFloat y;
};
typedef struct CGPoint CGPoint;
CGPoint p1 = CGPointMake(10, 10);
NSLog(@"%@", NSStringFromCGPoint(p1));


CGRect表示矩形的尺寸及位置

struct CGRect {
    CGPoint origin;
    CGSize size;
};
typedef struct CGRect CGRect;
CGRect r1 = CGRectMake(0, 0, 100, 50);
NSLog(@"%@", NSStringFromCGRect(r1));


其他常用函數

//比較兩個點是否相同
bool CGPointEqualToPoint(CGPoint point1, CGPoint point2);
//比較兩個尺寸是否相同
bool CGSizeEqualToSize(CGSize size1, CGSize size2);
//比價兩個Rect是否相同
bool CGRectEqualToRect(CGRect rect1, CGRect rect2);
//判斷Rect中是否包含某個點
bool CGRectContainsPoint(CGRect rect, CGPoint point);

     

這些幾何數據類型,都有表示0的常量

    CGPointZero  CGSizeZero CGRectZero



  • 幾何數據類型封裝成對象

數值類型可以封裝到NSNumber對象中

這些常用的結構體可以封裝到NSValue對象中,NSValue是NSNumber的父類

+ (NSValue *)valueWithRange:(NSRange)range
+ (NSValue *)valueWithCGPoint:(CGPoint)point
+ (NSValue *)valueWithCGSize:(CGSize)size
+ (NSValue *)valueWithCGRect:(CGRect)rect
@property(readonly) NSRange rangeValue
- (CGPoint)CGPointValue
- (CGSize)CGSizeValue
- (CGRect)CGRectValue

NSValue還可以封裝:

    形變結構體CGAffineTransform

    邊距結構體UIEdgeInsets

    3D形變結構體CATransform3D

    經緯度結構體MKCoordinate

    ...





向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

伊川县| 永胜县| 扎赉特旗| 潞城市| 饶平县| 景谷| 泰兴市| 吴川市| 崇左市| 卓尼县| 绥化市| 全南县| 宜城市| 绩溪县| 莲花县| 阳谷县| 肃宁县| 黔西| 钟山县| 台州市| 云林县| 巴中市| 乐平市| 蓬溪县| 沭阳县| 咸丰县| 徐闻县| 遵义市| 汾阳市| 东至县| 灵宝市| 饶平县| 沈丘县| 越西县| 巩留县| 克拉玛依市| 汉寿县| 文登市| 屏南县| 盱眙县| 科尔|