在我的钢琴课中,我有一个属性(Keys是另一个自定义类)
@property (nonatomic, retain) Keys *lastPlayed;
在我的一个钢琴方法中,我使用Key对象数组中的对象设置lastPlayed的值。
self.lastPlayed = [allKeys objectAtIndex:variable];
上面的代码行会导致程序崩溃。
我注意到如果我从allKeys数组硬编码特定的Key对象,那么它可以正常工作。像这样:
self.lastPlayed = keyC;
有趣的是,如果我将崩溃的代码放入不同的方法中,它就不会崩溃。
如何防止崩溃?
编辑:
我在Keys类中调用此方法,其中我的钢琴是委托
[delegate deliverTagwithNameTag:self.tag]
然后钢琴响应
- (void) deliverTagwithNameTag:(int)nameTag {
self.lastPlayed = [allKeys objectAtIndex:nameTag];
}
答案 0 :(得分:0)
你可能没有得到明显无法解释的崩溃,你可能会提出异常。您可以查看控制台以找出您引发的异常。通常情况下,在这种情况下告诉你要么数组是否有超出范围的值(如果variable
以某种方式收集了不正确的值可能会发生这种情况),那将是有用的。数组本身无效(可能是内存分配问题)或者返回的东西不能存储为lastPlayed
(这通常表示你在setter中做了一些自定义的事情并且得到了一个意想不到的类型类)。
因此,为了防止崩溃,请检查您的控制台并查找其中一个问题。