gpt4 book ai didi

由于 IBOutletCollection,每当我运行时,XCode 都会抛出 Sigabrt 错误

转载 作者:行者123 更新时间:2023-12-04 16:52:12 24 4
gpt4 key购买 nike

我正在为 iOS 5 创建应用程序,但出现以下错误:

Assertion failure in -[UIRuntimeOutletCollectionConnection performConnect], /SourceCache/UIKit_Sim/UIKit-1912.3/UIRuntimeOutletCollectionConnection.m:43

我已尝试调试该错误并且可以看到它的发生是因为我将一个项目连接到 IBOutletCollection。

IBOutletCollection 定义如下:

@property (strong) IBOutletCollection(BallButton) NSSet *Balls;

NSSet *Balls;

被定义为实例变量。

只要我没有将 Ball 连接到界面生成器中的集合,应用程序就会正常加载。但是,一旦将任何球添加到集合中,我就会在 ViewController 和所有球都已实例化之后以及 ViewController 中的 ViewDidLoad 之前收到错误消息。

它工作正常,然后我重新定位了一些层,现在我无法摆脱这个错误。

如果任何人甚至可以提供有关为什么会发生这种情况的建议,甚至只是一个使用 IBOutletCollection 的 iOS 5 示例(如果我在设置中做错了什么,但我认为我没有)那么它会不胜感激。

谢谢

最佳答案

除了使用 IBOutletCollection 之外,您还可以获取包含集合中所需所有项目的 View ,并使用 IBOutlet 连接它。然后使用:

- (NSSet *)getBallsFromView:(UIView *)view
{
NSMutableSet *balls = [[NSMutableSet alloc] init];
for (UIView *subview in [view subviews])
{
if ([subview isKindOfClass:[BallButton class]])
[balls addObject:(BallButton *)subview];
}
}

这将从 View 中检索特定类型的所有项目,然后您可以简单地将它们添加到集合中。如果它们直接在您正在迭代的 View 上,这只会获取所有项目。如果有一个 subview 也包含您想要的项目,您将必须递归调用此方法。

关于由于 IBOutletCollection,每当我运行时,XCode 都会抛出 Sigabrt 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10540795/

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