“AppearanceWhenContainedIn”已被弃用。

4
我最近安装了一个新的Cocoapod ChameleonFramework,但是在使用这个框架时就遇到了错误。它告诉我:“'appearanceWhenContainedIn:'已弃用:自iOS 9.0起首次弃用-请改用+appearanceWhenContainedInInstancesOfClasses:”。我真的不知道该怎么办,因为这段代码是用Objective-C编写的,而我对Objective-C并不熟悉,我只会Swift。因此,任何帮助都将不胜感激。以下是引起错误的代码:
#import "UIAppearance+Swift.h"

@implementation UIView (UIViewAppearance_Swift)

+ (instancetype)appearanceWhenContainedWithin: (NSArray *)containers {

NSUInteger count = containers.count;
NSAssert(count <= 10, @"The count of containers greater than 10 is not supported.");

return [self appearanceWhenContainedIn:
        count > 0 ? containers[0] : nil,
        count > 1 ? containers[1] : nil,
        count > 2 ? containers[2] : nil,
        count > 3 ? containers[3] : nil,
        count > 4 ? containers[4] : nil,
        count > 5 ? containers[5] : nil,
        count > 6 ? containers[6] : nil,
        count > 7 ? containers[7] : nil,
        count > 8 ? containers[8] : nil,
        count > 9 ? containers[9] : nil,
        nil];
}

@end

这可能看起来是一个非常简单的问题,但我并不了解太多Objective-C,所以任何帮助解决这个问题的建议都将对我很有帮助!

2个回答

1

保持 CocoaPod 最新由编写者负责;联系他们。同时,这不是你的代码,所以无需做任何操作。目前代码可以正常工作,因此不需要采取任何行动。


好的,谢谢!我会给他们发电子邮件。但是,在此期间,我是否可以修复这个问题,还是必须等待他们发布新版本的Pod? - Harish
你可以修复它,但你真的想改变别人的代码吗?如果你要接手,你会想要自己维护这段代码 - 而你已经说过你没有准备好这样做。 - matt
是的,我可能会等待ChameleonFramework的新版本发布。 - Harish
如果有针对此功能的测试,请修复并提交拉取请求。如果没有测试,您可以编写一个或者自问是否真的想在您的应用程序中包含未经测试的代码。 - quellish

1

虽然不建议修改你不了解的人的代码,但最终可能会有人面临这个警告:

只需将 appearanceWhenContainedIn: 替换为 appearanceWhenContainedInInstancesOfClasses: 即可。

例如:

// old code
[[UIScrollView appearanceWhenContainedIn:[self class], nil] 
setBackgroundColor:[UIColor whiteColor]];

// new code
[[UIScrollView appearanceWhenContainedInInstancesOfClasses:@[[self class]]] 
setBackgroundColor:[UIColor whiteColor]];


1
非常感谢您的这篇文章。我点击了自动修复此警告。但之后对我来说最具挑战性的部分是@[[self class]]]。 - CGN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接