zoukankan      html  css  js  c++  java
  • objectiveC 的代码文件组织

    上一篇中,所有代码都是放在同一个文件main.h中的,这显然不是一个好的方式,代码多了以后,看着就头大。可以将其进行拆分:

    1、将所有枚举、结构的定义单独放在一个文件ShapeDef.h中

    //定义“几何形状类型”枚举
    typedef enum
    {
    	kCircle,
    	kRectangle,
    	kOblatesShperoid   
    } ShapeType;
     
    //定义“几何形状颜色”枚举
    typedef enum
    {
    	kRedColor,
    	kGreenColor,
    	kBlueColor
    } ShapeColor;
     
    //定义“几何形状矩形区域”结构
    typedef struct
    {
    	int x,y,width,height;
    } ShapeRect;
     
     
    //定义“几何形状”结构
    typedef struct
    {
    	ShapeType type;
    	ShapeColor fillColor;
    	ShapeRect bounds;
    }Shape;
    

    2、将所有方法都放在另一个文件ShapeMethod.h中

    #import "ShapeDef.h"
    
    //将“颜色枚举“转换为字符串
    NSString *colorName(ShapeColor colorName)
    {
    	switch (colorName) 
    	{
    		case kRedColor:
    			return @"red";
    			break;
    		case kGreenColor:
    			return @"green";
    			break;
    		case kBlueColor:
    			return @"blue";
    		default:
    			return @"no clue";
    			break;
    	}
    }
    
    //画圆
    void drawCircle(ShapeRect bounds,ShapeColor fillColor)
    {
    	NSLog(@"drawing a circle at (%d,%d,%d,%d) in %@",bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor));
    }//drawCircle
     
    //画矩形
    void drawRectangle(ShapeRect bounds,ShapeColor fillColor)
    {
    		NSLog(@"drawing a rectangle at (%d,%d,%d,%d) in %@",bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor));
    }//drawRectangle
     
    //画椭圆形
    void drawEgg(ShapeRect bounds,ShapeColor fillColor)
    {
    	NSLog(@"drawing an egg at (%d,%d,%d,%d) in %@",bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor));
    }//drawEgg
     
    //画几何形状
    void drawShapes(Shape shapes[],int count)
    {
    	int i;
    	for(i=0;i<count;i++)
    	{
    		switch (shapes[i].type) 
    		{
    			case kCircle:
    				drawCircle(shapes[i].bounds,shapes[i].fillColor);
    				break;
    			case kRectangle:
    				drawRectangle(shapes[i].bounds,shapes[i].fillColor);
    				break;
    			case kOblatesShperoid:
    				drawEgg(shapes[i].bounds,shapes[i].fillColor);
    				break;
    			default:
    				break;
    		}
    	}
    }//drawShapes
    
    
    

    3、最后在主文件Main.m中使用ShapeMethod.h

    #import "ShapeMethod.h"
    
    
    int main () {    
    
    	Shape shapes[3];
    	 
    	ShapeRect rect0 ={0,0,10,30};
    	shapes[0].type = kCircle;
    	shapes[0].fillColor = kRedColor;
    	shapes[0].bounds = rect0;  
    	 
    	ShapeRect rect1 = {30,40,50,60};
    	shapes[1].type = kRectangle;
    	shapes[1].fillColor = kGreenColor;
    	shapes[1].bounds = rect1;
    	 
    	ShapeRect rect2 = {15,18,37,39};
    	shapes[2].type = kOblatesShperoid;
    	shapes[2].fillColor = kBlueColor;
    	shapes[2].bounds = rect2;  
    	 
    	drawShapes(shapes, 3);
    	
        
        return 0;
    }
    

    注:ShapeDef.h,ShapeMethod.h,Main.m三个文件均处于同一个项目的同一个目录中。

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    ruby之gem update --system 失败
    免费的视频资源
    java的数据类型
    函数parseQuery用于解析url查询参数
    使用闭包的方式实现一个累加函数 addNum
    正则表达式之捕获重用
    JavaScript正则表达式练习
    JavaScript的数组和字符串应用
    Sublime Text3.0的安装
    Oracle的集合运算符
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1944856.html
Copyright © 2011-2022 走看看