将CGRect转换为Array中的NSValue,反之亦然

And*_*rew 11 iphone nsarray cgrect

我有一个充满CGRects的数组.那部分没问题.问题是当我从数组中检索CGRects时,我得到了奇怪的错误.看看我的代码.

NSArray *frameLocations = [NSArray arrayWithObjects:
                           [NSValue valueWithCGRect:CGRectMake(20, 20, 121, 124)],
                           [NSValue valueWithCGRect:CGRectMake(176, 20, 121, 124)],
                           nil];
Run Code Online (Sandbox Code Playgroud)

比我在for循环中得到帧,像这样:

 CGRect *imageFrame = [[frameLocations objectAtIndex:i] CGRectValue];
Run Code Online (Sandbox Code Playgroud)

我尝试了一系列不同的变体,将这一行传播到多个变量上.但我似乎无法得到它.

Tom*_*mmy 16

尝试:

CGRect imageFrame = [[frameLocations objectAtIndex:i] CGRectValue];
Run Code Online (Sandbox Code Playgroud)

你得到一个实际的CGRect,而不是一个指向CGRect的指针,因为它是一个原始的C风格类型,而不是一个Objective-C对象.

除此之外,您的代码看起来正确.

  • 是的,他们应该称之为Subjective-C. (6认同)
  • 不要觉得愚蠢 - 事情的真相是什么是C风格的原语,什么是Objective-C对象通常只是一个务实的,与绩效相关的决定.随着时间的推移你会感觉到哪一个,但命名约定或类似的东西没有固有的区别,所以最初很容易混淆这两件事. (2认同)