gpt4 book ai didi

iphone - NsMutableArray 无故更改为 UITableViewCellContentView

转载 作者:行者123 更新时间:2023-12-01 18:03:18 26 4
gpt4 key购买 nike

我有一个问题。在 UITableViewController 的 viewDidLoad 方法中,我有:

myfields = [NSMutableArray array];
for (int x = 0; x < 10; x++) {
UITextField * field = [[UITextField alloc] initWithFrame:CGRectMake(130,12,150,25)];
field.backgroundColor = [UIColor clearColor];
field.font = [UIFont systemFontOfSize:15];
field.delegate = [[OptionFieldDelegate alloc] init];
[myfields addObject: field];
}
NSLog(@"myfields array - %@",myfields);

这给出了这个输出:
myfields array - (
"<UITextField: 0x6a35b50; frame = (130 12; 150 25); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x6a35c60>>",
"<UITextField: 0x6a36820; frame = (130 12; 150 25); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x6a367f0>>",
"<UITextField: 0x6a374e0; frame = (130 12; 150 25); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x6a374b0>>",
"<UITextField: 0x6a382e0; frame = (130 12; 150 25); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x6a382b0>>",
"<UITextField: 0x6a38ea0; frame = (130 12; 150 25); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x6a38e70>>",
"<UITextField: 0x6a39950; frame = (130 12; 150 25); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x6a39a60>>",
"<UITextField: 0x6a3a630; frame = (130 12; 150 25); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x6a3a600>>",
"<UITextField: 0x6a3b1f0; frame = (130 12; 150 25); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x6a3b1c0>>",
"<UITextField: 0x6a3bdb0; frame = (130 12; 150 25); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x6a3bd80>>",
"<UITextField: 0x6a3c970; frame = (130 12; 150 25); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x6a3c880>>"
)

这很好,但下一点不是。在需要之前我不会触摸该数组,但在 - tableView:cellForRowAtIndexPath: 方法中我有这个:
NSLog(@"Array = %@",myfields);
NSLog(@"class - %@",NSStringFromClass([myfields class]));
NSLog(@"0 - %i",[indexPath row] - 2);
NSLog(@"1 - %@",[myfields objectAtIndex:[indexPath row] - 2]);
[[cell contentView] addSubview: [myfields objectAtIndex:[indexPath row] - 2]];

这是输出:
2010-11-13 00:58:13.808 Poll Maker[1803:207] Array = <UITableViewCellContentView: 0x6a35b10; frame = (10 1; 300 43); layer = <CALayer: 0x6a3e680>>
2010-11-13 00:58:13.809 Poll Maker[1803:207] class - UITableViewCellContentView
2010-11-13 00:58:13.809 Poll Maker[1803:207] 0 - 0
2010-11-13 00:58:13.810 Poll Maker[1803:207] -[UITableViewCellContentView objectAtIndex:]: unrecognized selector sent to instance 0x6a35b10
2010-11-13 00:58:13.812 Poll Maker[1803:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCellContentView objectAtIndex:]: unrecognized selector sent to instance 0x6a35b10'

我很迷茫。谁能帮我?谢谢你。

最佳答案

你犯了一个内存管理错误。如果您希望数组停留在第一种方法结束之后,您必须保留该数组。

在您的情况下,数组曾经所在的内存(在自动释放池释放之前)被 UITableViewCell 的 subview 覆盖。

关于iphone - NsMutableArray 无故更改为 UITableViewCellContentView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4170339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com