我对此深感困惑。我在[iOS
编辑:我试图更改此语句的位置,并检查一些日志语句,我可以确认该应用程序仅在此行崩溃。

这是我的代码的一部分:

    //Various allocations here like

lblForAttachingPhoto = [[UILabel alloc]initWithFrame:CGRectMake(235, 105, 40, 20)];
lblForAttachingPhoto.backgroundColor = [UIColor grayColor];
[lblForAttachingPhoto setText:@"140"];
[lblForAttachingPhoto setTextAlignment:UITextAlignmentCenter];

btnAttachPhoto = [UIButton buttonWithType:UIButtonTypeCustom];
btnAttachPhoto.frame = CGRectMake(275, 105, 20, 20);
btnAttachPhoto.autoresizesSubviews = YES;
btnAttachPhoto.clipsToBounds = YES;
[btnAttachPhoto setImage:[UIImage imageNamed:@"arrow.jpg"] forState:UIControlStateNormal];
[btnAttachPhoto addTarget:self action:@selector(attachPhoto) forControlEvents:UIControlEventTouchUpInside];

viewForAttaching = [[UIView alloc]init];
viewForAttaching.frame = CGRectMake(5, -340, 310, 140);


for(NSInteger e=0;e<[_appDelegate.genericArray count];e++)
{
    [genericArray addObject:[_appDelegate.genericArray objectAtIndex:e]];
}

for(NSInteger f=0; f< [_appDelegate.category_type count]; f++)
{
    [category_type addObject:[_appDelegate.category_type objectAtIndex:f]];
}

txtVw = [[UITextView alloc]init];     //txtVw is a textview

但是,尽管textview分配语句的位置很高,但它使应用程序崩溃了。

控制台输出:
          Program received signal:  “EXC_BAD_ACCESS”.
          warning: check_safe_call: could not restore current frame

          warning: Unable to restore previously selected frame.

可能吗?我也在实现UITextViewDelegate协议(protocol)。

有人可以帮忙吗?

提前感谢。

最佳答案

崩溃实际上不太可能是由于UITextView初始化引起的。我实际上怀疑for()循环中其上方的行。您的命名和内存管理非常不一致,这在ObjC中很危险。

首先,为变量赋予一致的名称。 category_type听起来像枚举,但似乎是NSMutableArray。这种命名会在ObjC中杀死您;您必须跟踪情况,因为编译器通常不会捕获类型不匹配的情况。您应该使用categoryTypes之类的名称。

接下来,您不应直接访问自己的ivars。始终使用访问器。总是。 (除非是dealloc中的内容,否则存在争议。)这是避免EXC_BAD_ACCESS的#1方法。您显然没有正确保留某些内容。访问器可以防止这种情况。

您是否真的要在_appDelegate.genericArray后面附加genericArray?还是您真的要把genericArray复制为_appDelegate.genericArray?还是只想让genericArray指向_appDelegate.genericArray?如果要复制,只需复制它:

self.genericArray = [NSMutableArray arrayWithArray:self.appDelegate.genericArray];

我知道所有这些听起来都像是“公正的风格”,但是一致的风格对于稳定ObjC绝对至关重要。您会看到否则会遇到的各种令人讨厌的崩溃。

您还应该点击“Cmd-Shift-A”,让静态分析器为您查找错误。

关于iphone - UITextView alloc使iOS4上的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3684603/

10-11 15:05