我有大约50个CGPoint对象来描述类似于"路径"的东西,我想将它们添加到NSArray中.它将是一个只返回给定索引的相应CGPoint的方法.我不想创建50个变量,比如p1=.;p2=.,以此类推.有没有一种简单的方法可以让我在用对象初始化NSArray时"立即"定义这些点?

推荐答案

随着UIKit版Apple将对CGPoint的支持增加到NSValue版,因此您可以:

NSArray *points = [NSArray arrayWithObjects:
                     [NSValue valueWithCGPoint:CGPointMake(5.5, 6.6)],
                     [NSValue valueWithCGPoint:CGPointMake(7.7, 8.8)],
                     nil];

列出与CGPoint一样多的[NSValue]实例,并以nil结束列表.此 struct 中的所有对象都会自动释放.

另一方面,从数组中提取值时:

NSValue *val = [points objectAtIndex:0];
CGPoint p = [val CGPointValue];

Ios相关问答推荐

为什么Pushed View Controller在UIKit中具有导航控制器?

当重新呈现UI时,嵌套的 struct 值如何与@Observable一起工作?

如何在iOS 17 SwiftUI中获取用户名

在 Swift 中 @MainActor 似乎被 withCheckedContinuation 而不是其他异步调用继承是巧合吗?

为什么常量属性可能在 Swift 类中被初始化两次?

弹出视图后使所有背景 UI 模糊

集成 IDNow SDK 时未找到 Xcode FLAnimatedImage.h 文件问题

如何将 ImageView 放置在 UIView 的中心?

如何从 scendelegate 打开我的标签栏控制器

从 NSData 或 UIImage 中查找图像类型

如何覆盖@synthesized getter?

在 Swift 中禁用向后滑动手势

如何动态计算 UILabel 高度?

正确的领域使用模式/最佳实践?

用户拒绝使用后如何提示用户打开位置服务

使用 swift 3 在 UIView 上添加阴影

xcode 5.1:libCordova.a 架构问题

在转发类对象中找不到属性

如何立即移动 CALayer(无动画)

Xcode 5 和 iOS 7:架构和有效架构