gpt4 book ai didi

ios - Objective-C 反射;将参数传递给方法

转载 作者:行者123 更新时间:2023-11-29 03:10:06 25 4
gpt4 key购买 nike

我需要在 objective-c 中使用反射/内省(introspection)。我可以通过编写来创建实例;

id object = [[NSClassFromString(@"UIView") alloc]init];

在这一点上,我也想让它设置它的框架。

我已经写了下面的代码片段,但它没有编译。

SEL method2 = NSSelectorFromString(@"setFrame:");
CGRect rect = CGRectMake(0, 0, 1024,768);
NSValue * value = [NSValue valueWithCGRect:rect];
[object performSelector:method2 withObject:value];

如何将参数传递给对象的 setFrame 或 setBackgroundColor 方法。

你能帮我弄清楚吗?

提前致谢

编辑

我已经找到了我想要的解决方案,

有一个方法叫做 CGRectFromString(NSString*)

它解决了我的问题。

我可以用下面的代码设置 View 的框架

SEL method2 = NSSelectorFromString(@"setFrame:");

if([object respondsToSelector:method2])
{
[object setFrame:CGRectFromString(@"{{0, 0}, {1024, 768}}")];
}

最佳答案

尝试这样的事情,在我看来它更清晰和直接。请注意,respondsToSelector 只是为了通过向未实现它的对象发送方法来避免崩溃(在您的问题中您没有检查它,因此在您的情况下可能不需要)。

id object = [[NSClassFromString(@"UIView") alloc]init];

if(object respondsToSelector:@selector(setFrame:)){
[object setFrame:CGRectMake(0, 0, 1024, 768)];
}

关于ios - Objective-C 反射;将参数传递给方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22326185/

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