我有一个名为 test 的全新Objective-C类。 测试类有一个名为 someValue 的实例变量,其中包含一个整数。
我创建了5个测试类实例,名为aTest,bTest,cTest,dTest和eTest。适用于 someValue 的合成和属性声明。
是否有一种干净的方法可以返回所有现有测试类实例中具有最高 someValue 值的类实例的名称?类实例的数量可能与我的示例中的5不同。
注意我不关心价值是什么,我只想返回具有最高' someValue 类实例的名称 >'实例变量。
我尝试了一些NSMutable数组但是只能获取值而不是包含它的变量的名称。
提前致谢
答案 0 :(得分:3)
如果我正确地阅读了您的问题,您已将一组变量(aTest,bTest,cTest,dTest和eTest)定义为测试类的实例。
test *aTest = [[test alloc] initWithSomeValue:5];
test *bTest = [[test alloc] initWithSomeValue:42];
/* ... and so on ... */
变量名对计算机毫无意义。所有编译器都关心的是每个编译器(可能)是唯一的。编译代码后,所有变量名称都被完全删除;剩下的就是代表每个内存位置的数字。
您只使用命名变量作为以人类可读方式编写代码的方法。如果您希望将字符串与 test 类的每个实例相关联,则需要使用NSString实例成员显式执行此操作。然后你会写:
test *aTest = [[test alloc] initWithSomeValue:5];
[aTest setName:@"a"];
test *bTest = [[test alloc] initWithSomeValue:42];
[bTest setName:@"b"];
答案 1 :(得分:0)
假设您的对象的类名为“YourObject”:
NSArray *objects = [NSArray arrayWithObjects:aTest, bTest, cTest, dTest, eTest, nil];
int i = [objects count];
int max = 0;
YourObject *highest;
while (i--)
{
int current = ((YourObject *)[objects objectAtIndex:i]).someValue;
if (current > max)
{
max = current;
highest = (YourObject *)[objects objectAtIndex:i];
}
}
// highest will be reference to object with highest someValue
NSLog(@"%@", highest);