2015-03-04 2 views
0

Я учусь ИОС с Стэнфордский CS193P, и есть проблемы в лекции 8Почему мой класс наследование от UIDynamicAnimator не может использовать addChildBehavior

Я создал класс с именем DropItBehavior наследства от UIDynamicAnimator, но я не могу использовать метод UIDynamicAnimator addChildBehavior , Xcode предупреждение, как "Нет видимых @interface для "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 

ответ

2

Это потому, что addChildBehavior является методом UIDynamicBehavior, а не UIDynamicAnimator. Согласно конспектов CS-193P, ваш класс Dropit должен наследоваться от UIDynamicBehavior вместо:

@interface DropItBehavior : UIDynamicBehavior 
+0

ТНХ много !! Это теперь работать – flame

0

Глядя на docs, нет способа -[UIDynamicAnimator addChildBehavior:], а также в вашем подклассе.

Однако UIDynamicBehavior не делает.

Я бы дважды проверял, что вы подклассифицируете нужные объекты.

+0

ТНХ много !! Он работает сейчас – flame