我的方法中有3种行为,我很确定animationOptions是导致错误的一种。 AnimationOptions仅用于禁止旋转。如果我删除此行为,我的代码可以正常工作。

这是我的错误由于未捕获的异常而终止应用程序

'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil’


添加异常断点后,该断点将停留在此行:

[self addChildBehavior:self.animationOptions];


如果我删除此行,我的代码工作正常。

但是我该如何解决此错误,我找不到此行错误在哪里

这是我的DropitBehavior.m

#import "DropitBehavior.h"
@interface DropitBehavior()
@property(strong,nonatomic) UIGravityBehavior *gravity;
@property(strong,nonatomic) UICollisionBehavior *collider;
@property(strong,nonatomic) UIDynamicItemBehavior *animationOptions;
@end

@implementation DropitBehavior
-(UIGravityBehavior *)gravity
{
    if (!_gravity) {
        _gravity=[[UIGravityBehavior alloc]init];
        _gravity.magnitude=0.90;
    }
    return _gravity;
}

-(UICollisionBehavior *)collider
{
    if (!_collider) {
        _collider=[[UICollisionBehavior alloc]init];
        _collider.translatesReferenceBoundsIntoBoundary=YES;
    }
    return _collider;
}

-(UIDynamicItemBehavior *)animationOptions
{
    if (_animationOptions) {
        _animationOptions=[[UIDynamicItemBehavior alloc]init];
        _animationOptions.allowsRotation=NO;
    }
    return _animationOptions;
}

-(void)additem:(id <UIDynamicItem>)item
{
    [self.gravity addItem:item];
    [self.collider addItem:item];
    [self.animationOptions addItem:item];
}

-(void)removeitem:(id <UIDynamicItem>)item
{
    [self.gravity removeItem:item];
    [self.collider removeItem:item];
    [self.animationOptions removeItem:item];
}

-(instancetype)init
{
    self=[super init];
    [self addChildBehavior:self.gravity];
    [self addChildBehavior:self.collider];
    [self addChildBehavior:self.animationOptions];
    return self;
}
@end

最佳答案

NSMutable数组不接受要添加到自身的“ nil”

“ self.animationOptions”将调用

 -(UIDynamicItemBehavior *)animationOptions


方法,并且该方法将始终仅返回“ nil”。

 -(UIDynamicItemBehavior *)animationOptions
 {
    if (_animationOptions) {
    _animationOptions=[[UIDynamicItemBehavior alloc]init];


您在这段代码中的逻辑不允许系统构造“ _animationOptions”对象。

    if (!_animationOptions)
{
..code..

}


有助于

10-05 22:39