gpt4 book ai didi

objective-c - UIScrollview 中的 UIView 中的 UIButton,ARC 问题

转载 作者:搜寻专家 更新时间:2023-10-30 20:26:29 26 4
gpt4 key购买 nike

这是一个 iOS5 和 ARC 特定的问题。

我在 UIScrollView 中设置了一组 UIView,每个 UIView 都在 UIView 类中声明了自己的 UIButton:

      IBOutlet UIButton*button;
@property(nonatomic,strong) UIButton*button;

(我原来也有这个作为 retain 而不是 strong,但是没有区别)

我还合成了按钮并在 IB 中将其连接到:

      -(IBAction)showArticle:(id)sender;

根据文章的类型,我用一个大循环将它们全部添加到 ScrollView 中:

       NewsScrollLead*view = [[NewsScrollLead alloc]initWithNibName:@"NewsScrollLead"  bundle:nil];

[view.view setFrame:CGRectMake(0, 0, 513, 225)];
[view.titleLabel setText:[newsDict objectForKey:@"title"]];
[view.details setText:[self flattenHTML:[newsDict objectForKey:@"description"]]];
[view.source setText:[newsDict objectForKey:@"author"]];

[view.details setFont:[UIFont fontWithName:@"HelveticaNeue-Condensed" size:14]];
[view.titleLabel setFont:[UIFont fontWithName:@"HelveticaNeue-BoldCond" size:20]];
[view.source setFont:[UIFont fontWithName:@"HelveticaNeue-Condensed" size:14]];

[self.newsScrollView addSubview:view.view];

这是一个如何创建 View 并将其添加到 ScrollView 的示例。

当我试图点击一个按钮时,我每次都从不同的东西(而不是 UIButton)收到无法识别的选择器错误。使用 NSZombie,该按钮已因某种原因被释放。

有什么想法吗?相同类型的 iOS5 之前的问题通过保留 UIButton 或包含它的 View 得到解决,但是对于 ARC 没有可用的保留。

最佳答案

您有以下内容:- 一个名为 view 的 NewsScrollLead 对象(我们称它为 N)- 在 N 内部还有一个 View (我们称它为 V)- 在 N 里面还有一个 UIButton B- 然后你添加到 self.newsScrollView View V

N怎么了?好吧,它被释放了,因为它从未被使用过。因此 B 也被释放了。唯一剩下的项目是 V。

您的问题是您创建了无用的 V。留在 N 并将其添加到 self.newsScrollView。为什么N里面需要一个V?或者,如果您确实需要 N 来存储各种项目,那么 N 应该是一个 NSObject(而不是 NSView),并且 self 应该有一个数组属性来存储您创建的所有 N 个对象。

关于objective-c - UIScrollview 中的 UIView 中的 UIButton,ARC 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8074251/

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