Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 创建UIView数组_Ios_Objective C_Uiview - Fatal编程技术网

Ios 创建UIView数组

Ios 创建UIView数组,ios,objective-c,uiview,Ios,Objective C,Uiview,我在创建代码中的UIView数组时遇到了麻烦。我创建了一个棋盘,每个方块都是一个视图。在UIViewController类声明中,我有以下内容- @interface ChessViewController : UIViewController { ChessSquareView *squares[64]; } 在.m文件中,我为for循环中的64个正方形中的每一个创建视图,如下所示- for ( int i=0; i<64; i++) squares[i] = [

我在创建代码中的UIView数组时遇到了麻烦。我创建了一个棋盘,每个方块都是一个视图。在UIViewController类声明中,我有以下内容-

@interface ChessViewController : UIViewController
{
    ChessSquareView   *squares[64];
}
在.m文件中,我为for循环中的64个正方形中的每一个创建视图,如下所示-

for ( int i=0; i<64; i++)
    squares[i] = [ [ChessSquareView alloc] initWithFrame:sq];
在h中:

英寸


和其他人一样,我建议使用NSMutableArray而不是C数组。即使如此,C数组也应该可以工作

但是,您发布的代码对每个视图的框架使用相同的值。它们都应该重叠。除非你漏掉了计算sq矩形的代码?如果您这样做了,那么就展示代码,因为它无疑对解决问题很重要


为什么不使用i为每个视图指定一个标记呢?这将有助于您查看视图是否以某种方式变得混乱。

1。UIView是否正确放置?当您添加一些随机颜色时,尝试将它们放入UIView的backgroundColor属性中&请首先查看。2.您需要先将位置转换为UIView的坐标系。@整数-UIView的位置正确。我已经改变了这个问题,因为我现在确信这是一个数组创建问题。NSArray是用于对象的;它有很有用的访问和操作方法,并且内存管理正确。如果视图是可见的并且位于正确的位置,那么我不理解框架是错误的说法。首先,我想说“更好”使用Objective-C数组而不是C数组,尽管我看不出你所做的有什么错&因为你说视图放置正确,所以在创建数组时似乎没有什么错。您能否提供一些您稍后在代码中所说的信息,例如touchEnd函数,我正在遍历视图数组,发现对象都是错误的?使用属性创建变量和直接声明变量之间有什么区别,就像我假设我还包装了一个NSMutableArray一样?此外,我将阅读文档并找出如何解除锁定。这只是创建数组的objective-c方法。我尝试了c方式,但它似乎没有响应任何与NSMutableArray或NSArray相同的方法。我认为在这种情况下,使用objective-c对象是“最安全的”,特别是如果您将其设置为属性-在这种情况下,所有内存管理都将为您处理,只要您使用ARC。啊,那么如果我将其创建为属性,内存管理将自动完成?是的,“自动”,即为您插入保留/释放/自动释放。您仍然必须确保不会导致retain cycles,并在处理完强引用对象后将其设置为nil,以便它们可以被释放。我将代码更改为像其他人建议的那样使用NSMutableArray,并且它起到了作用。我不会为所有视图添加相同的CGRect。此外,我还看到电路板的渲染是正确的。因此,问题在于数组的创建。为什么我不能为对象创建一个C数组?更重要的是,有没有一种方法可以在不使用NSArray或NSMutableArray的情况下创建对象数组?
for (int i=0; i<25; i++)
{
    NSLog(@"Checking Square %@", NSStringFromCGRect([squares[i] frame]));

}
@property (nonatomic, strong) NSMutableArray *squares;
self.squares = [[NSMutableArray alloc] init];

for(int i = 0; i < 64; i++)
{
    ChessSquareView *v = [[ChessSquareView alloc] initWithFrame:sq];
    [self.squares addObject:v];
}