本日主要练习list的几个方法,有add object 和 排序输出。
main函数内容
#import <Foundation/Foundation.h>
#import "Fraction.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Fraction *fra = [[Fraction alloc] initWithN:5 andD:1];
[fra print];
NSMutableArray *list = [NSMutableArray array];
[list addObject:[[[Fraction alloc]initWithN:1 andD:5] autorelease]];
[list addObject:[[[Fraction alloc]initWithN:1 andD:3] autorelease]];
[list addObject:[[[Fraction alloc]initWithN:1 andD:2] autorelease]];
[list addObject:[[[Fraction alloc]initWithN:1 andD:7] autorelease]];
[list addObject:[[[Fraction alloc]initWithN:1 andD:17] autorelease]];
[list addObject:[[[Fraction alloc]initWithN:1 andD:9] autorelease]];
for (Fraction* fra in list) {
[fra print];
}NSLog(@" ");
NSLog(@"**************************排序后");
[list sortUsingSelector:@selector(fraComp:)];
for (Fraction* fra in list) {
[fra print];
}
NSLog(@" ");
NSLog(@"倒序输出**************************");
for (int i=(int)list.count;i>0;i--)
{
Fraction* frat = [list objectAtIndex:i-1];
[frat print];
}
[fra release],fra=nil;
}
return 0;
}
//Fraction.h
#import <Foundation/Foundation.h>
@interface Fraction : NSObject
{
int numerator;
int denominator;
}
@property (nonatomic,assign) int numerator;
@property (nonatomic,assign) int denominator;
-(void)setNumerator:(int) n;
-(void)setDenominator:(int) d;
-(void)print;
-(Fraction*)initWithN:(int)n andD:(int)d;
-(NSComparisonResult)fraComp:(Fraction *)frac2;
@end
#import "Fraction.h"
@implementation Fraction
@synthesize numerator,denominator;
-(void)setNumerator:(int) n
{
numerator = n;
}
-(void)setDenominator:(int) d
{
denominator = d ;
}
-(void)print
{
NSLog(@"%i/%i",numerator,denominator);
}
-(Fraction*)initWithN:(int)n andD:(int)d
{
if (self=[super init])
{
numerator = n ;
denominator =d ;
}
return self;
}
-(NSComparisonResult)fraComp:(Fraction *)frac2
{
double d1 = (double)numerator / denominator;
double d2 = (double)frac2.numerator / frac2.denominator;
if (d1<d2)
{
return NSOrderedAscending;
}else if (d1>d2)
{
return NSOrderedDescending;
}
else
{
return NSOrderedSame;
}
return NSOrderedSame;
}
@end