iPhone:有没有一种方法可以循环浏览NSObject的属性?
我有一个NSObject,定义如下:iPhone:有没有一种方法可以循环浏览NSObject的属性?,iphone,objective-c,nsobject,Iphone,Objective C,Nsobject,我有一个NSObject,定义如下: @interface MFMoodMix : NSObject { NSNumber *m1; NSNumber *m2; NSNumber *m3; NSNumber *m4; NSNumber *m5; NSNumber *m6; NSNumber *m7; } 有没有什么方法可以快速遍历所有这些值以找到最大的值?e、 g.像UIView as(UIView*x in view.subview)一
@interface MFMoodMix : NSObject {
NSNumber *m1;
NSNumber *m2;
NSNumber *m3;
NSNumber *m4;
NSNumber *m5;
NSNumber *m6;
NSNumber *m7;
}
有没有什么方法可以快速遍历所有这些值以找到最大的值?e、 g.像UIView as(UIView*x in view.subview)一样,有没有类似的方法可以快速实现这一点
谢谢不。这是一个糟糕的设计。改为使用NSN数字数组
@interface MFMoodMix : NSObject {
NSArray *ms;
}
然后在init
方法中(或其他地方)将数字添加到数组中:
-(id) init
{
/* ... */
ms = [[NSArray alloc] initWithObjects:
[NSNumber ...],
[NSNumber ...], nil];
/* ... */
}
为了迭代,仅举一个考虑NSNumber为int的示例:
如果您有一个类似的值集合,您需要以相同的方式访问这些值,我建议您只需将它们放入<代码>收藏。如果将这些值放入
NSArray
,就可以轻松地对它们进行迭代,并根据需要对它们进行排序。如果您想保留m*前缀,可以用NSDictionary
替换,并使用m值作为键。如果您无法将数字转换为数组,您可以使用objc运行时:-)
这里有一条很好的线索,所以:啊,很好+我总是对这些事情感兴趣。+1对于
/*这不是Python*/
。我给另外一个+1表示“这是一个糟糕的设计”,因为它是。-1表示“这是一个糟糕的设计”,因为你不必是一个灌木丛。类似于“不,但是如果你可以用一个NSNumbers数组来代替NSNumbers集合,你可以通过……来循环使用它”这样的话,就可以在没有冒犯的情况下理解这一点。
int high = 0; /* or a negative number... */
/* This is not Python */
for (NSNumber *n in ms)
if ([n intValue] > high)
high = [n intValue];