Objective-c 面向对象画图形(此程序不符合内存管理规则)
编程技术  /  houtizong 发布于 3年前   89
在同一个文件中,没有分割出来
#import <Foundation/Foundation.h>// --------------------------------------------------// constants for the different kinds of shapes and their colorstypedef enum {kRedColor,kGreenColor,kBlueColor} ShapeColor;// --------------------------------------------------// Shape bounding rectangle//声明结构用于形状边界//为什么用结构来定义边界,因为结构可以方便的使用//例:ShapeRect rect_0 = {0, 0, 1, 1};typedef struct {int x, y, width, height;} ShapeRect;// --------------------------------------------------// convert from the ShapeColor enum value to a human-readable nameNSString *colorName (ShapeColor color);NSString *colorName (ShapeColor color){switch (color) {case kRedColor:return @"red";break;case kGreenColor:return @"green";break;case kBlueColor:return @"blue";break;}return @"no clue";} // colorName// --------------------------------------------------// All about Circles@interface Circle : NSObject{ ShapeColor fillColor; ShapeRect bounds;}- (void) setFillColor: (ShapeColor) fillColor;- (void) setBounds: (ShapeRect) bounds;- (void) draw;@end // Circle@implementation Circle- (void) setFillColor: (ShapeColor) c{fillColor = c;} // setFillColor- (void) setBounds: (ShapeRect) b{bounds = b;} // setBounds- (void) draw{NSLog (@"drawing a circle at (%d %d %d %d) in %@", bounds.x, bounds.y, bounds.width, bounds.height, colorName(fillColor));} // draw@end // Circle// --------------------------------------------------// All about Rectangles@interface Rectangle : NSObject{ShapeColorfillColor;ShapeRectbounds;}- (void) setFillColor: (ShapeColor) fillColor;- (void) setBounds: (ShapeRect) bounds;- (void) draw;@end // Rectangle@implementation Rectangle- (void) setFillColor: (ShapeColor) c{fillColor = c;} // setFillColor- (void) setBounds: (ShapeRect) b{bounds = b;} // setBounds- (void) draw{NSLog (@"drawing a rectangle at (%d %d %d %d) in %@", bounds.x, bounds.y, bounds.width, bounds.height, colorName(fillColor));} // draw@end // Rectangle// --------------------------------------------------// All about OblateSphereoids@interface OblateSphereoid : NSObject{ShapeColorfillColor;ShapeRectbounds;}- (void) setFillColor: (ShapeColor) fillColor;- (void) setBounds: (ShapeRect) bounds;- (void) draw;@end // OblateSphereoid@implementation OblateSphereoid- (void) setFillColor: (ShapeColor) c{fillColor = c;} // setFillColor- (void) setBounds: (ShapeRect) b{bounds = b;} // setBounds- (void) draw{NSLog (@"drawing an egg at (%d %d %d %d) in %@", bounds.x, bounds.y, bounds.width, bounds.height, colorName(fillColor));} // draw@end // OblateSphereoid// --------------------------------------------------// Draw the shapesvoid drawShapes (id shape, int count);void drawShapes (id shape, int count) // 注意,这里和书上不同,上上为 id shapes[],但在xcode4.2中编译错误,抛Must explicitly describe intended ownership of an object array parameter{[shape draw];} // drawShapes// --------------------------------------------------// The main function. Make the shapes and draw themint main (int argc, const char * argv[]) {id shapes[3];ShapeRect rect0 = { 0, 0, 10, 30 };shapes[0] = [Circle new];[shapes[0] setBounds: rect0];[shapes[0] setFillColor: kRedColor];drawShapes (shapes[0], 3); ShapeRect rect1 = { 30, 40, 50, 60 };shapes[1] = [Rectangle new];[shapes[1] setBounds: rect1];[shapes[1] setFillColor: kGreenColor]; drawShapes (shapes[1], 3);ShapeRect rect2 = { 15, 19, 37, 29 };shapes[2] = [OblateSphereoid new];[shapes[2] setBounds: rect2];[shapes[2] setFillColor: kBlueColor]; drawShapes (shapes[2], 3);return (0);} // main
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接