项目总结二:关于项目中一些功能的优化

前言:

最近一直在维护老的项目,遇到的问题也千奇百怪,需要修补的,需要优化的,需要特殊处理的,感觉总是那么的无语。也许这时候也应该感叹一句:路漫漫其修远兮,吾将上下而求索吧。

这篇文章就只是讲讲老项目中遇到的种种不敢苟同的代码写法,以及遇到一些问题时的处理方法。

1、关于按钮事件的重复点击问题

我们开发中大概都经历过这样的事情,我的一个button被重复的快速点击,(我们开发者应该更清楚的知道这意味着什么)。那我们再深入的想一下(给这样的事件安排一个特定的环境):例如当网络较差的情况下,再例如当button的执行事件较为耗时时。这时就会出现很多的问题:有时是界面出现问题(当button执行事件中出现调节界面frame的时候);有时则会出现卡顿,更甚至会出现崩溃现象。对于这种问题,我们要提前考虑到,做好防范处理:即点击按钮事件时:添加防止重复点击功能。

思路是:防止按钮重复点击

原理是:我们每次点击按钮时,先执行取消之前的按钮点击执行事件,然后再去执行一个延迟执行方法(方法中执行的是按钮执行的事件)。

比较推荐的解决方法代码:

- (void)btnClicked:(id)sender
{
    //在这里做按钮的想做的事情。
}

- (void)buttonClicked:(id)sender
{
    //先将未到时间执行前的任务取消。

    [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(btnClicked:)object:sender];

    [self performSelector:@selector(btnClicked:)withObject:sender afterDelay:0.2f];

}

还有一种方法也是可以实现的:具体的看《iOS之防止用户重复点击Button(按钮)问题 》

2、很多界面共用一个界面时:使用枚举做类型判断

老的项目中会出现很多这样的现象:很多界面重复使用一个界面,这样就自然而然的需要在不同的界面跳转到复用的界面时去做判断。而奇怪的地方在于:判断的依据是self.title。那么就会出现这样一种现象:在跳转界面后会有一大段if去判断字符串是否等于self.title 。

如果我们做一些改变:使用枚举来做界面类型的判断,使用switch case语句做判断执行代码。这样会不会更优美,简洁一些。

3、关于老项目中iOS10以上的情况下,导航栏中按钮不显示问题

如果你的viewController都继承于基类,那么在基类中添加这样一段代码(这也是目前我发现的最省事的方法):

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:NO];
    [self.navigationController setNavigationBarHidden:NO animated:NO];
}

-(void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:NO];
    [self.navigationController setNavigationBarHidden:NO animated:NO];
}

4、事件方法要每个界面区分开

老项目中会有这种情况:在本界面 command点击一个button执行事件方法或者手势事件方法时,会莫名其妙的跳转到另外一个界面。

我们在开发时最好给不同界面button的clicked事件命名是区分开来,例如:界面名+ButtonClicked

5、在开发中如果存在image为空,或者必须显示的String为空,记得在代码中作判断,图片可以直接设置默认图片,字符串也可以设置默认字符串

例如:

   UIImage *image = [UIImage imageNamed:@"image"];
    UIImage *defaultImage = [UIImage imageNamed:@"defaultImage"];

    UIImageView *imageView = [[UIImageView alloc]initWithImage:imageName ? imageName:defaultImage];
时间: 2024-08-06 19:50:47

项目总结二:关于项目中一些功能的优化的相关文章

电力项目十二--运行监控中添加进度条

应用场景: 1.文件上传.下载(IO流); 2.数据的导入导出: 3.大批量数据的增删改查: 4.远程数据的访问. 添加函数loading(); <%@ page language="java" pageEncoding="UTF-8"%> <%@taglib uri="/struts-tags" prefix="s" %> <!-- 添加标签,然后做栈顶获取数据 --> <html&

ppt画笔标记在哪里|ppt中画笔工具功能怎么用?

一.ppt中画笔工具功能在哪里? 这个画笔工具其实就相当于我们的一个标记工具,要实现标记功能首先将需要演示的PPT按住F5进入到放映状态,然后在右击ppt上的空白处就会弹出衣蛾对话框,在对话框中选择“指针选项”即可.如图所示: 二.ppt中画笔工具功能怎么用? 选择指针选项之后就会有“箭头.圆珠笔.毡尖笔.荧光笔四个标记笔的选项.随机选择一个工具笔即可在演示的PPT里面进行涂改注明.(或者直接进入到演示幻灯片状态下按住快捷键ctrl+p键同样是使用画笔功能. 三.ppt画笔工具不能用是怎么回事?

Android的学习之路(二)项目中原生文件的使用场景和文件介绍

1.src文件:java源代码存放目录 2.gen 文件:自动生成所有由android开发工具自动生成的文件,目录中最重要的就是R.java文件,这个文件由android开 发工具自动产生的.android开发工具会自动根据你存放res目录的资源,同步更新修稿R.java文件,正因为 R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java.R.java文件在应用中起到了字典的作 用,它包含了各种资源的ID,通过R.java,应用可以很方便的找到对应资源, 2.1R.java 

项目小结二:APP 小红点中数字的处理

小红点,是 APP 中最常见的一个功能,我们先来看一下面的案例,下图中,待评价的商品有 2 个,点击“评价晒单”按钮进行评价后,那么待评价数量应该变成 1,那么这个功能是如何去实现的呢? 一般来说,实现的方法有三种: 一.刷新整个页面的数据 就是说,每显示一次,都重新从服务端把数据拉下来,这种方法虽然简单,但是,加大了服务端的负荷,并且由于要整页刷新,用户体验不好. 二.利用事件实现 比如说:增加一个名为 评价晒单 的事件,个人中心页面监听这个事件,而在用户进行评价晒单操作时,服务端返回待评价数

利用Eclipse中的Maven构建Web项目(二)

利用Eclipse中的Maven构建Web项目 1.新建源文件夹,Java Resources鼠标右键,"New-->Source Folder" 2.新建src/main/java   src/main/resources  src/test/java  src/test/resources四个源包 3.双击每个文件夹的Output folder,选择路径 src/main/java和src/main/resources,选择路径target/classes; src/test

二阶段项目总结

在做项目的这段时间里,发现遇见了好多之前没有预料到的问题,有的时候,因为一个小问题,纠结了好久好久. 一.项目期间出现的问题: 1.数据库的分析,建立,这个问题就出现了好几个问题,首先表与表的关系.表中各项的数据类型,整理的并不是很好. 2.后端的代码,总是出现各种错误,无论是DAO层还是Severlet层,这里面写的时候,并没有用多长时间,但是写完之后的调用,出现了之前始料未及的各种bug,找起来特别的麻烦 3.DAO层的构建,都是每次需要一个方法的时候,现去添加一个新的方法,导致后期整合的时

团队项目:二次开发

二.团队项目:二次开发 至此,我们有了初步的与人合作经验,接下来投入到更大的团队中去. 也具备了一定的个人能力,能将自己的代码进行测试.接下来尝试在别人已有的基础上进行开发. 上一界51冯美欣同学的项目:http://www.cnblogs.com/maxx/ 1.每个团队从Github上fork这个项目的源代码: https://github.com/RABITBABY/We-have-bing 2.了解.部署.运行这个项目,理解其功能及实现: 3.进行必要的测试,发现软件的bug并记录,并进

2016年大学生研究性学习和创新性实验计划项目 我的项目 :二维码数据反馈系统 第四周作业

参加软件班后介于一直没有实训的机会,感觉自己应该主动找点项目,提升自己的技术水平,这次在老师和同学的帮助下参加了2016年大学生研究性学习和创新性实验计划项目: 下面是我参与的项目的一些简介: 项目名:二维码数据反馈系统    简述:二维码具有面积小,信息容量大,安全性高,读取率高,纠错能力强等优点,不仅能够存储足够的物品信息,还具有抗干扰能力强.运用环境适应性好.使用成本低廉等优点, 现今成为各种产品  防伪的首要选择.        项目的创新点和特色 :传统的生产厂商通过条形码来记录商品信

从零开始,跟我一起做jblog项目(二)Maven

从零开始,跟我一起做jblog项目(一)引言 从零开始,跟我一起做jblog项目(二)Maven maven是一个项目管理工具,尤其适用于JAVA世界 在jblog的开发前期,还没有系统使用过maven 只是在有一次合作开发过程中使用过subclipse以及SVN版本控制,当时了解过maven的一些知识 在正儿八经学习了<Maven实战>这本电子书以后,我认为maven是每一个JAVA程序员都需要了解并使用的 为什么?因为JAVA的世界里,你不可能所有东西都自己来写 要引入的JAR包实在太多,