找不到'CAAnimationDelegate'的协议声明

时间:2016-08-16 10:06:02

标签: ios objective-c

之前我的代码很好,但它提示我:

cannot find protocol declaration for 'CAAnimationDelegate';did you mean 'UIApplicationDelegate'?

今天我跑的时候。

我尝试过导入QuartzCore/CAAnimation.h,但无效。

2 个答案:

答案 0 :(得分:20)

CAAnimationDelegate是iOS 10 SDK中添加的新协议。这意味着如果你用Xcode 8构建它就在那里,但如果用Xcode 7构建它就不存在。

使用Xcode 8构建时,您会收到警告:

Assigning to 'id<CAAnimationDelegate> _Nullable' from incompatible type 'WhateverUIViewController *const __strong'

如果添加CAAnimationDelegate,您的代码将不再构建在Xcode 7中。如果你需要使用两个Xcode进行构建,则需要使用ifdefs:

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 100000
// CAAnimationDelegate is not available before iOS 10 SDK
@interface WhateverUIViewController ()
#else
@interface WhateverUIViewController () <CAAnimationDelegate>
#endif

答案 1 :(得分:4)

CAAnimationDelegate 不是协议。没有必要告诉您的班级将实施 CAAnimationDelegate

首先,您需要导入 QuartzCore / QuartzCore.h 。然后,您只需将您的类(您要在其中实现动画委托方法)对象作为委托给 CAAnimation < / strong>对象。它会在启动动画时自动调用 animationDidStart ,并在完成动画时调用 animationDidStop 方法。