91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

简阳市| 宜昌市| 哈巴河县| 澄城县| 台州市| 仁怀市| 根河市| 张家川| 调兵山市| 乐都县| 营口市| 榆中县| 合川市| 黄大仙区| 洛川县| 乌兰浩特市| 曲靖市| 嘉定区| 漳浦县| 平和县| 保靖县| 津市市| 乐昌市| 无为县| 来凤县| 镇平县| 清镇市| 泰顺县| 哈尔滨市| 任丘市| 永德县| 增城市| 静乐县| 喀喇沁旗| 金塔县| 信丰县| 两当县| 七台河市| 黄平县| 衢州市| 泽普县|