【问题标题】:Why my class Inheritance from UIDynamicAnimator can not use addChildBehavior为什么我的 UIDynamicAnimator 类继承不能使用 addChildBehavior
【发布时间】:2015-03-04 14:52:48
【问题描述】:

我正在用 Stanford CS193P 学习 ios,在第 8 讲有问题

我从 UIDynamicAnimator 创建了一个名为 DropItBehavior 的类,但我不能使用 UIDynamicAnimator 方法 addChildBehavior,xcode 警告如“No visible @interface for "DropItBehavior" 声明选择器 'addChildBehavior'”

这是.h文件

#import <UIKit/UIKit.h>

@interface DropItBehavior : UIDynamicAnimator

- (void)addItem:(id <UIDynamicItem>)item;
- (void)removeItem:(id <UIDynamicItem>)item;

@end

这是.m文件

#import "DropItBehavior.h"

@interface DropItBehavior()
@property (strong, nonatomic) UIGravityBehavior *gravity;
@property (strong, nonatomic) UICollisionBehavior *collision;
@end

@implementation DropItBehavior

- (instancetype)init
{
    self = [super init];
    [self addChildBehavior:self.gravity];//Here is the Xcode warning"No visible @interface for "DropItBehavior" declares the selector 'addChildBehavior"
    return self;
}
- (instancetype)init
{
    self = [super init];
    [self addChildBehavior:self.gravity];
    return self;
}
- (UIGravityBehavior *)gravity
{
    if (!_gravity) {
        _gravity = [[UIGravityBehavior alloc] init];
        _gravity.magnitude = 0.9;
    }
    return _gravity;
}

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

- (void)addItem:(id <UIDynamicItem>)item
{
    [self.gravity addItem:item];
    [self.collision addItem:item];

}

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



@end

【问题讨论】:

    标签: ios xcode cs193p uidynamicanimator


    【解决方案1】:

    这是因为addChildBehaviorUIDynamicBehavior 的方法,而不是UIDynamicAnimator 的方法。根据 CS-193P 的讲义,您的 DropIt 类应该从 UIDynamicBehavior 继承:

    @interface DropItBehavior : UIDynamicBehavior
    

    【讨论】:

      【解决方案2】:

      查看docs,没有方法-[UIDynamicAnimator addChildBehavior:],也没有在你的子类中。

      但是,UIDynamicBehavior 可以。

      我会仔细检查你是否继承了正确的对象。

      【讨论】:

        猜你喜欢
        • 2010-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-28
        • 1970-01-01
        • 2015-09-02
        • 1970-01-01
        • 2014-09-09
        相关资源
        最近更新 更多