亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

大同县| 伊宁县| 德江县| 万荣县| 灵丘县| 施甸县| 灌南县| 尚义县| 南丹县| 调兵山市| 石河子市| 砚山县| 甘孜| 乌拉特前旗| 临江市| 新安县| 中卫市| 屏南县| 浦县| 堆龙德庆县| 西林县| 青铜峡市| 环江| 尼勒克县| 交城县| 土默特左旗| 唐河县| 明水县| 通化县| 孟连| 钟山县| 潍坊市| 西乌珠穆沁旗| 潜江市| 历史| 荣成市| 宁陕县| 乐清市| 营山县| 连山| 东乡县|