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

Objective-C核心結構體詳解:NSRange、NSPoint、NSSize/CGSize、NSRect/CGRect

     編輯:關於C語言

Objective-C/iOS開發必備:四大核心結構體完全指南

在Objective-C與iOS/macOS開發中,NSRange、NSPoint、NSSize/CGSize、NSRect/CGRect是最高頻使用的幾何與範圍結構體。本文系統整理其定義、構造函數、常用轉換方法及實戰代碼片段。

1. NSRange —— 範圍表示

typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange;
// 快速構造
NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
    NSRange r = {loc, len}; return r;
}
// 結構體轉字符串
NSString *NSStringFromRange(NSRange range);

用法示例:

NSRange range = NSMakeRange(8, 10);
NSLog(@"location: %zu, length: %zu", range.location, range.length);
NSString *str = NSStringFromRange(range);
NSLog(@"range: %@", str); // 輸出: {8, 10}

2. NSPoint / CGPoint —— 點座標

struct CGPoint { CGFloat x; CGFloat y; };
typedef CGPoint NSPoint;
// 構造函數
NS_INLINE NSPoint NSMakePoint(CGFloat x, CGFloat y) { NSPoint p = {x, y}; return p; }
CG_INLINE CGPoint CGPointMake(CGFloat x, CGFloat y) { CGPoint p = {x, y}; return p; }
// 轉字符串
NSString *NSStringFromPoint(CGPoint point);

用法:

CGPoint pt = CGPointMake(29, 78);
NSLog(@"point: %@", NSStringFromPoint(pt));

3. NSSize / CGSize —— 尺寸大小

struct CGSize { CGFloat width; CGFloat height; };
typedef CGSize NSSize;
NS_INLINE NSSize NSMakeSize(CGFloat w, CGFloat h) { NSSize s = {w, h}; return s; }
CG_INLINE CGSize CGSizeMake(CGFloat w, CGFloat h) { CGSize s = {w, h}; return s; }
NSString *NSStringFromSize(CGSize size);

4. NSRect / CGRect —— 矩形區域 (原點+尺寸)

struct CGRect { CGPoint origin; CGSize size; };
typedef CGRect NSRect;
NS_INLINE NSRect NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) {
    NSRect r = {{x, y}, {w, h}}; return r;
}
CG_INLINE CGRect CGRectMake(CGFloat x, CGFloat y, CGFloat w, CGFloat h) {
    CGRect r = {{x, y}, {w, h}}; return r;
}
NSString *NSStringFromRect(CGRect rect);

綜合示例:

CGRect rect = CGRectMake(12, 14, 100, 50);
NSLog(@"rect: %@", NSStringFromRect(rect));
// 訪問成員
rect.origin.x = 20;
rect.size.width = 200;

💡 開發提示

  • NS*與CG*類型在64位系統下互為typedef,可直接混用。
  • 偏好使用CG*系列(Core Graphics),跨平台一致性更好。
  • 調試時善用NSStringFrom*系列函數快速輸出結構體內容。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved