gpt4 book ai didi

Objective-C 在运行时修改方法的参数

转载 作者:行者123 更新时间:2023-12-03 17:37:19 25 4
gpt4 key购买 nike

我想在运行时更改参数的值,并好奇这在 Obj-C 中如何工作。

我有一个循环,其中“n”的值为 0,每次循环增加 1。如何随着 n 的移动将传递的参数加 1。

UIViewSubclass *uiViewSubclass = [[UIViewSubclass alloc] initWithValue:([value integerValue]) 
andPlacement:kPlacement0;

下次循环时,我希望将第二个参数读为:andPlacement:kPlacement1;然后:andPlacement:kPlacement2;以及...

我是否将 kPlacement 设为字符串和 stringByAppendingString:[[NSNumber numberWithInt:n] stringValue]; ?

Obj-C/Cocoa 方法是什么?

最佳答案

您无法在运行时修改源代码或组成变量引用。 Objective-C 并不是那么动态。

如果 kPlacement0kPlacementMax 的值是连续的,您可以使用 for 循环直接单步执行它们:

for (MyPlacement placement = kPlacement0; placement += kPlacementIncrement; placement <= kPlacementMax) {
UIViewSubclass *instanceOfUIViewSubclass = [[UIViewSubclass alloc] initWithValue:([value integerValue])
andPlacement:placement];
//Do something with instanceOfUIViewSubclass.
[instanceOfUIViewSubclass release];
}

(除了kPlacement0等常量之外,您还需要定义kPlacementIncrementkPlacementMax。我正在使用 MyPlacement 作为 kPlacement0 等常量对应的枚举类型的名称。)

如果它们不是连续的,请将它们放入 C 数组中并迭代该数组:

enum { numPlacements = <#Insert the number of placement constants here#> };
MyPlacement placements[numPlacements] = {
kPlacement0,
kPlacement1,
kPlacement2,

}

for (unsigned i = 0U; i < numPlacements; ++i) {
UIViewSubclass *instanceOfUIViewSubclass = [[UIViewSubclass alloc] initWithValue:([value integerValue])
andPlacement:placements[i]];
//Do something with instanceOfUIViewSubclass.
[instanceOfUIViewSubclass release];
}

您可能可以想出比 kPlacement0 等更具描述性的名称。当您想按数字引用它们时,就这样做;当您想称呼他们的名字时,请给他们起个好听的名字。

关于Objective-C 在运行时修改方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1281005/

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