0

我正在寻找一种方法来存储对 NSMutableArray 中变量的引用。由于将根据用户选择的内容动态创建变量,因此我希望能够简单地对该数组进行排序并获取对这些创建变量的引用。万一这很重要,我正在创建一个 iPhone 项目。但是,当我尝试使用以下代码执行此操作时:

for (int a = 0; a < 10; a++)
{
UIView *tempView;
[listingOfViews addObject:tempView];
}

for (int a = 0; a < [listingOfViews count]; a++)
{
[listingOfViews objectAtIndex:a] = defaultViewStructure;
}

它给了我这个错误:“错误:需要左值作为赋值的左操作数”

有任何想法吗?

编辑:另外,我收到此错误:“错误:在不是结构或联合的情况下请求成员'大小'”

当我尝试做

for (int a = 0; a < [listingOfViews count]; a++)
{
[listingOfViews objectAtIndex:a].size.height = ...
}
4

2 回答 2

1

对于你的第二个问题:

for (int a = 0; a < [listingOfViews count]; a++)
{
    [listingOfViews objectAtIndex:a].size.height = ...
}

这里有一个误解(一个 UIView 没有 -size,它有一个包含大小的 -frame),再加上一些实际上有点棘手的东西,因为他们在 Obj-C 2 中添加了非常令人困惑的点符号和一个当您使用结构时,对象模型的不幸故障。你做你想做的事情的方式是:

UIView *view = [listingOfViews objectAtIndex:a];
NSRect frame = [view frame];
frame.size.height = ...
[view setFrame:frame];

有一些方法可以稍微压缩行数,但是您确实需要获取一个 NSRect 结构,修改它,然后将其设置回来。在大多数视图上,您​​不能一次调用修改高度。

于 2009-08-26T22:46:11.063 回答
0

你的意思是:

[listingOfViews replaceObjectAtIndex:a withObject:defaultViewStructure];

但是当您尝试将那些未初始化的 tempView 指针放入数组时它会崩溃。你真的想在这里做什么?我认为可能是时候退后一步,从 Objective-C 的基础开始。看起来您正在尝试将 C++ 概念直接移植到 ObjC 中,并且它们的做事方式非常不同。

您可能想从Objective-C 编程开始,然后可能是Cocoa Programming for Mac OS X。(后者是基于 Mac 的,而不是 iPhone,但它仍然是最好的起点。)

于 2009-08-26T22:23:12.887 回答