Sorry it's a little late but took a little longer than expected to get the free time to complete the assignments this last week.
Was tempted to add a initWithWidth: andHeight: method but kept it simple so it would be easier for others to compare notes.

main.m
#import <Foundation/Foundation.h>
#import "Rectangle.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Rectangle *myRect = [[Rectangle alloc] init];
[myRect setWidth: 4];
[myRect setHeight: 2];
NSLog(@"Your rectangle is %i wide and %i high.", [myRect width], [myRect height]);
NSLog(@"The area of your rectangle is %i \n and the perimeter of your rectangle is %i.", [myRect area], [myRect perimeter]);
[myRect release];
[pool drain];
return 0;
}
Rectangle.h
// Rectangle.h
#import <Cocoa/Cocoa.h>
@interface Rectangle : NSObject {
int width;
int height;
}
-(void) setWidth: (int) w;
-(void) setHeight: (int) h;
-(int) width;
-(int) height;
-(int) area;
-(int) perimeter;
@end
Rectangle.m
// Rectangle.m
#import "Rectangle.h"
@implementation Rectangle
-(void) setWidth: (int) w
{
width = w;
}
-(void) setHeight: (int) h
{
height = h;
}
-(int) width
{
return width;
}
-(int) height
{
return height;
}
-(int) area
{
return width * height;
}
-(int) perimeter
{
return width * 2 + height * 2;
}
@end