我对此深感困惑。我在[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/