iOS部分-UI基础控件 - 01天 入门 第12课 代码优化

来源:互联网 发布:松下fpwin编程手册 编辑:程序博客网 时间:2024/06/05 23:45
讲到
1.Xcode的bug 
2.实现代码优化 
3.switch中的魔法数字(如何避免)枚举 常量的魔法数字 宏


1.Xcode的bug
复制项目的时候,修改复制文本,他会回到原来的文本修改。

我把项目02拷贝了一份,文件夹改成02-按钮操作-优化
02-按钮操作-优化打开项目
通过连线2次的时候,出现一个问题。不给我们连线了。(Xcode6.3)
开发会经常遇到的。我们回到这个项目里面,我之前在这个项目02-按钮操作)-优化里面打了

/*

 1.基本功能实现

 2.对代码优化:

    尽量让重复的代码只出现一次

 */

它无缘无故的跑去了( 02-按钮操作这个项目)里面了

我们需要的是点击助理编辑区上面的Automatic 这时候我们当前的实现文件是复制项目的文件了(02-按钮操作-优化

这是很多公司不愿意使用Xcode的原因。Xcode缓存的一个问题。

2.实现代码优化

视图开发中有一个非常非常常见的属性(tag)是view的属性,
它可以让我们省很多代码

通过storyboard查看连线
通过点击控件,然后右键就可以查看当前控件有哪些连线。



3.switch中的魔法数字(如何避免)枚举 常量的魔法数字 宏
在编写代码的时候,我们经常使用到switch语句,但是有很多人如果用数字来表示。那么我怎么知道你这些数字是什么意思。这些数字称为魔法数字。
还有在c语言定义枚举类型,枚举的类型名一般以k开头

switch的魔法数字 使用枚举

常量中的魔法数字 使用宏

//枚举本质上就是整数,定义的时候,如果只定义了第一个数值,后续的数值会依次递增

//枚举类型是解决魔法数字比较常用的手段


//使用宏定义魔法数字


#define kMovingDelta 20


typedef enum {

    kMovingDirTop = 10,

    kMovingDirBottom,

    kMovingDirLeft,

    kMovingDirRight

} kMovingDir;



全代码


#import "ViewController.h"


//枚举本质上就是整数,定义的时候,如果只定义了第一个数值,后续的数值会依次递增

//枚举类型是解决魔法数字比较常用的手段


//使用宏定义魔法数字


#define kMovingDelta 20

typedef enum {

    kMovingDirTop = 10,

    kMovingDirBottom,

    kMovingDirLeft,

    kMovingDirRight

} kMovingDir;


@interface ViewController ()

@property (weaknonatomicIBOutlet UIButton *iconButton;


@end


@implementation ViewController



/*

  让重复的代码只出现一次

 */

- (IBAction)move:(UIButton *)button

{


    //修改位置可以通过frame

    //OC中,不允许直接修改"对象""结构体属性"的成员

    //但是允许修改"结构体属性""成员"

    //如果要修改对象的结构体属性,需要三个步骤

    

    //1.取出buttonframe

    CGRect frame = self.iconButton.frame;

    //2.根据按钮的类型,判断移动的方向,再修改结构体的成员

    

    //这些叫做魔法数字 我写一些数字,你猜不出来

    

    //magic number魔法数字

    //如何避免魔法数字

    switch (button.tag) {

        case kMovingDirTop:    // 

            frame.origin.y -= kMovingDelta;

            break;

        case kMovingDirBottom:    // 

            frame.origin.y += kMovingDelta;

            break;

        case kMovingDirLeft:    // 

            frame.origin.x -= kMovingDelta;

            break;

        case kMovingDirRight:    // 

            frame.origin.x += kMovingDelta;

            break;

            

        default:

            break;

    }

    

    //3.重新为对象的结构体属性赋值

    self.iconButton.frame = frame;

}



@end

0 0
原创粉丝点击