Foundationフレームワーク(1)数値オブジェクトと構造体オブジェクト
最初のバージョンは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
...