gpt4 book ai didi

ios - Obj C 和 makeObjectsPerformSelector - 我是否忽略了什么?

转载 作者:行者123 更新时间:2023-11-28 18:19:01 25 4
gpt4 key购买 nike

作为 obj-c 的新手,我一直在研究 makeObjectsPerformSelector 方法。

我有两个数组,分别包含 UISteppers 和 UITextfields:

_stepper = [NSArray arrayWithObjects:
_stepMa, _stepMafree, _stepDe, _stepDefree, _stepFl, _stepFlfree,
_stepEn, _stepEnfree, _stepEnBl, _stepEnBlfree, _stepVo, _stepVofree,
_stepVe, _stepVefree, _stepIn, _stepInfree, _stepOt, _stepOtfree,
_stepIn170, _stepIn170free, _stepZy, _stepZyfree,
nil];

_fields = [NSArray arrayWithObjects:
_MaFeld, _MaFeldfree, _DeFeld, _DeFeldfree, _FlFeld, _FlFeldfree,
_EnFeld, _EnFeldfree, _EnBlFeld, _EnBlFeldfree, _VoFeld, _VoFeldfree,
_VeFeld, _VeFeldfree, _InFeld, _InFeldfree, _OtFeld, _OtFeldfree,
_InFeld170, _InFeld170free, _ZyFeld, _ZyFeldfree,
nil];

我想通过某种方式重置它们:

- (void) resetFields
{
[_stepper enumerateObjectsUsingBlock: ^(UIStepper* stepper, NSUInteger idx, BOOL *stop)
{
stepper.value = 0;
}];

[_fields enumerateObjectsUsingBlock: ^(UITextField* field, NSUInteger idx, BOOL *stop)
{
field.text = @"0";
}];
}

按预期工作。

尝试缩短该代码,我用上述方法试试运气:

- (void) resetFields
{
[_stepper makeObjectsPerformSelector:@selector(value) withObject:0];
[_fields makeObjectsPerformSelector:@selector(text) withObject:@"0"];
}

这没有影响......我想有些事情我没有考虑,但是什么?

谢谢!

最佳答案

要绕过 int 是 C 类型而不是对象的问题,请使用 KVC(键值编码)。如果您在 NSArray 对象上调用 setValue:forKey:,方法 setValue:forKey: 将调用数组的每个对象。此外,KVC 还管理着所有原始的东西。

[_stepper setValue:@0 forKey:@"value"];
[_fields setValue:@"0" forKey:@"text"];

关于ios - Obj C 和 makeObjectsPerformSelector - 我是否忽略了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24556564/

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