首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Objective-C 基礎筆記(七):Foundation 框架常用結構體詳解

     編輯:關於C語言

Objective-C 基礎筆記(七):Foundation 框架常用結構體詳解

在 Objective-C 開發中,Foundation 框架提供了幾個核心結構體,它們是處理幾何圖形、範圍選取等基礎操作的基石。本文將系統整理 NSRange、NSPoint、NSSize、NSRect 的定義、創建方式及常用轉換方法,幫助開發者快速掌握這些基礎數據類型。

一、NSRange —— 範圍表示

NSRange 用於描述一段連續區間的位置與長度,常見於字符串截取、數組切片等場景。

結構定義

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

常用創建與轉換

// 創建範圍:從第 8 個位置開始,長度為 10
NSRange range = NSMakeRange(8, 10);

// 讀取屬性
NSLog(@"location: %zi", range.location);  // 輸出:8
NSLog(@"length: %zi", range.length);      // 輸出:10

// 轉為字符串表示,便於調試
NSString *str = NSStringFromRange(range);
NSLog(@"%@", str);  // 輸出:{8, 10}

提示:NSRange 並非物件,不可直接加入 NSArray 或 NSDictionary,需用 NSValue 封裝([NSValue valueWithRange:range])。

二、NSPoint —— 點座標

NSPoint 其實是 CGPoint 的別名,用於表示二維平面上的點(x, y)。

結構定義

struct CGPoint {
    CGFloat x;
    CGFloat y;
};
typedef struct CGPoint CGPoint;
typedef CGPoint NSPoint;

常用創建與轉換

NSPoint p;

// 直接賦值
p.x = 10;
p.y = 10;

// 推薦:使用構造函數
p = NSMakePoint(11, 11);   // Foundation 風格
p = CGPointMake(12, 12);   // Core Graphics 風格

// 轉字符串
NSString *str = NSStringFromPoint(p);
NSLog(@"%@", str);  // 輸出:{12, 12}

三、NSSize —— 尺寸大小

NSSize 對應 CGSize,包含寬度與高度。

結構定義

struct CGSize {
    CGFloat width;
    CGFloat height;
};
typedef struct CGSize CGSize;
typedef CGSize NSSize;

常用創建與轉換

NSSize s;

// 直接賦值
s.width  = 100.1;
s.height = 100.3;

// 構造函數
s = NSMakeSize(12.3, 16.9);
s = CGSizeMake(15.3, 19.2);

// 轉字符串
NSString *str = NSStringFromSize(s);
NSLog(@"%@", str);  // 輸出:{15.3, 19.2}

四、NSRect —— 矩形區域

NSRect 由原點(NSPoint)與尺寸(NSSize)組成,對應 CGRect。

結構定義

struct CGRect {
    CGPoint origin;
    CGSize  size;
};
typedef struct CGRect CGRect;
typedef CGRect NSRect;

常用創建方式

NSRect r;

// 方式 1:分別設定 origin 與 size
r.origin = NSMakePoint(50, 50);
r.size   = NSMakeSize(60, 60);

// 方式 2:一步到位(最常用)
r = NSMakeRect(20, 20, 30, 30);  // x, y, width, height

// 同樣可用 NSStringFromRect 轉字符串輸出

總結對照表

結構體對應 CG 類型構成欄位構造函數轉字符串
NSRange—location, lengthNSMakeRangeNSStringFromRange
NSPointCGPointx, yNSMakePoint / CGPointMakeNSStringFromPoint
NSSizeCGSizewidth, heightNSMakeSize / CGSizeMakeNSStringFromSize
NSRectCGRectorigin, sizeNSMakeRect / CGRectMakeNSStringFromRect

這四個結構體均為純 C 結構,非 Objective-C 物件,效能極高,且可直接在 Swift 中以 NSRange、CGPoint、CGSize、CGRect 形式跨語言互通。熟練掌握它們的創建、拆解與轉換,是進行 iOS/macOS 界面佈局、動畫計算、文字排版的基本功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved