gpt4 book ai didi

objective-c - 我必须在每一行上转换吗?

转载 作者:行者123 更新时间:2023-12-03 16:49:18 26 4
gpt4 key购买 nike

我一直在通过在 Objective C 中创建一个简单的应用程序来自学编程。今天,我遇到了一个问题,我必须编写一个不知道它将获得什么类型的对象的方法。在谷歌的帮助下,我很高兴地发现了一种叫做“casting”的东西。 :)

我正在使用这样的类型转换:

- (void)aCustomViewControllerNeedsToChangeStuff:(id)viewController
{
((SpecialViewController *)viewController).aProperty = somethingInteresting;
((SpecialViewController *)viewController).anotherProperty = somethingElse;
((SpecialViewController *)viewController).yetAnotherProperty = moreStuff;
}

我是否必须像这样在每一行上进行强制转换,或者有没有办法可以在方法的范围内强制转换“viewController”一次,以使我的代码更整洁?

最佳答案

您可以将 Controller 转换为临时变量并使用它(还添加了类型检查 - 以防万一):

- (void)aCustomViewControllerNeedsToChangeStuff:(id)viewController
{
if ([viewController isKindOfClass:[SpecialViewController class]]){
SpecialViewController *special = (SpecialViewController *)viewController;
special.aProperty = somethingInteresting;
special.anotherProperty = somethingElse;
special.yetAnotherProperty = moreStuff;
}
}

关于objective-c - 我必须在每一行上转换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6137870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com