返回具有最高'someValue'实例变量的类实例的名称

时间:2010-05-25 05:40:44

标签: iphone objective-c

我有一个名为 test 的全新Objective-C类。 测试类有一个名为 someValue 的实例变量,其中包含一个整数。

我创建了5个测试类实例,名为aTest,bTest,cTest,dTest和eTest。适用于 someValue 的合成和属性声明。

是否有一种干净的方法可以返回所有现有测试类实例中具有最高 someValue 值的类实例的名称?类实例的数量可能与我的示例中的5不同。

注意我不关心价值是什么,我只想返回具有最高' someValue 类实例的名称 >'实例变量。

我尝试了一些NSMutable数组但是只能获取值而不是包含它的变量的名称。

提前致谢

2 个答案:

答案 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);