Foundationフレームワーク(1)数値オブジェクトと構造体オブジェクト

3216 ワード

  • 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は2 Dサイズを表します.
    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
    3 D変形構造体CATransform 3 D
    経緯度構造体MKCoordinate
        ...