Xcode提供了以下几个重构功能:

  • Rename

  • Extract

  • Create Superclass

  • Move Up

  • Move Down

  • Encapsulate

在菜单栏中的位置如下图:

在代码区里直接右键也能出现重构的相关菜单:

下面就分别介绍这些重构功能的使用。

Rename:重命名

几乎可以试用所有symbol:类名,方法名,函数名,属性名等。使用起来非常简单,选中一个要命名的符号后,选择rename,就会弹出一个输入框让你输入要想要的新名称,输入完成后点击preview可以预览一下。

修改一个属性名称后的预览

Extract:将代码抽取为一个单独的方法或函数

选中一段代码后(可以包括注释),选择Extract,会分析你选择的代码段后自动生成方法签名。你可以修改方法名,如果参数、返回值不正确也可以自己再修改。

如果选择了function,就是另外一种格式:

在预览时如果发现有些需要调整,可以直接在预览框编辑。
下面是抽出一个doubleValue方法的预览:

Create Superclass:创建父类

这个很好理解了,就是创建一个当前类的父类。要注意的是要选中类名的时候才能成功触发。
需要注意的是预览界面最左边的导航区,选择中间一个是这次重构会影响到文件列表。可以点击到这个tab下查看其它类的改动。

如果有警告,会默认显示警告的tab。

Move Up & Move Down

Move Up:可以将一个方法、实例变量移动到父类中去。触发时和重命名一样,要选中实例名或者方法名后才能正常使用。在category中不适用。

Move Down:相反,将选中的实例变量移动到子类中。是的,方法就不能移到子类了。逻辑上很难理解为什么是这样。但是苹果爸爸就是这么任性。

Encapsulate:封装

这是一个令人怀念的词,多年后看到还是会想起期末考试里面向对象三大特点的填空题。
这个的作用是在你选中一个变量后,会自动帮你生成get、set方法。
下面是我将variableStr变量封装后的预览:

一些新手可能不太理解这个功能。因为在声明property时就已经自动生成了get、set方法。所以这个功能应该是有点过时了。
如果用过eclipse的同学可能要呵呵了,这个我们懂。

一件悲伤的事

以上这些重构功能并没有快捷键。
虽然好像有我也记不住啊!
别这样,白要谁不要。
那么如果我就是装逼快捷键党,不想让别人知道我选用了这个功能怎么办呢?
也许全世界你也可以忘记,至少还有key binding值得你去珍惜:

refactor-keybindings.png

一件更悲伤的事

喜新厌旧的我在使用swift时,选择了一个extract后,出现了下面的提示框。

我心中:

[转]Xcode的重构功能的更多相关文章

  1. 【转】Xcode重构功能怎么用我全告诉你

    原文网址:http://www.cocoachina.com/ios/20160127/15097.html 你会经常需要重构你的代码,让它有更好的结构,可读性或者提高可维护性.Xcode作为IDE其 ...

  2. Eclipse 中的重构功能

    Eclipse 中的重构功能使其成为了一个现代的 Java 集成开发环境 (IDE),而不再是一个普通的文本编辑器.使用重构,您可以轻松更改您的代码,而不必担心对别处造成破坏.有了重构,您可以只关注于 ...

  3. eclipse 重构功能。

    1. Rename Rename重构的功能就是重命名Java元素.虽然可以通过手动修改文件的文件名或其它Java元素的名称,但这种方式不会更新与此Java元素相关联的引用,用户必须手动查找和此Java ...

  4. Eclipse 重构功能的使用与重构快捷键

    重构是什么? 在代码写好之后改进它的设计. 重构分类:物理结构.类层次结构.类内部结构. 名称 快捷键 直译 作用范围 描述 Rename Alt + Shift + R     可以对任意变量.类. ...

  5. xcode的菜单栏功能解析

    [Xcode 7.2]Xcode菜单栏之你不知道的那点事 File: New : 可以新建tap,窗口,新文件,playground,workspace,target等等. Add Files to ...

  6. 【原创】Newlife.XCode的常见功能使用(一)查询与数据初始化

            本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html Newlife XCode组件相关文章目录:http://www ...

  7. xcode代码提示功能失效的解决方法

    xcode 自动提示很好用 然而大量的工作也是让他吃不消了 结果今天提示功能给我来了个罢工 这当然是不行的 也是万能的搜索帮我解决了这个问题 方法很多 选择了简单的 xcode --> Wind ...

  8. Xcode 8新功能介绍

    概述 Xcode 8正式版在9月13日已经推送给开发者下载,下载之后就出现了很多编译错误,之前的插件也不能用了,但是发现Xcode8把好多不错的插件功能整合到自身了,感觉这点也挺不错. 结合自己遇到的 ...

  9. 利用Idea重构功能及Java8语法特性——优化深层嵌套代码

    当遇到深层嵌套代码,如for,if,lambda表达式或内部类及这些代码的组合,这时我们可以通过Java 8的语法特性来进行优化. 下面的代码是一个嵌套循环的示例. public MappedFiel ...

随机推荐

  1. php批量上传图片并把图片名放入数据库

    前几天工作中要做这样一个功能,有八百多个系统 生成的会员:给这八百多个系统会员上传图片:然后把图片名放入数据库. 第一步: 第一步肯定是首先把图片上传到对应的图片目录下,直接用框架中已经有的上传类: ...

  2. UCOS 堆栈大小 计算 (堆栈的决定性因素)

    决定栈空间的大小,不仅需要计算任务本身的需求(局部变量.函数调用等),还要计算最多中断嵌套层数(保存寄存器.中断服务程序中局部变量等) 原文地址:uCOS任务堆栈的深入分析.作者:jiecou 堆栈作 ...

  3. 一个读取propeties配置文件的工具类,线程安全的

    public class ConfigUtil { private static Map<String,Properties> map = new HashMap<String,Pr ...

  4. Apple Pay 应用 demo --备用哦

    "iOS8.1就已经有这个功能了,只是木有现在这么的火,现在的趋势是要火的节奏,因此很多电商平台B2B,P2P,C2C,X2X都有可能需要这个屌丝的付款功能了,在此简单的研究一下." ...

  5. Coursera获取中文字幕(如果有的话)

    字幕的格式是  https://class.coursera.org/${课程代号}/lecture/subtitles?q=${视频编号}_zh-cn 例如 https://class.course ...

  6. AE-模板替换->愉快今日--视频样片!

  7. 转:pthread_create()

    http://blog.csdn.net/youbang321/article/details/7815707 原型:int  pthread_create((pthread_t  *thread,  ...

  8. Linux学习——粘粘今天看的东西

    由二分割表就叧有64 bytes而已,最多叧能容纳四笔分割的记录, 这四个分割的记录被称为主要(Primary)戒延伸(Extended)分割槽.分割槽的最小单位为磁柱(cylinder)请注意, 延 ...

  9. MVC4重复提交

    http://blog.sina.com.cn/s/blog_712ff52a0101f38r.html http://blog.csdn.net/litao2/article/details/868 ...

  10. Android视图框架

    Android视图框架 Android的UI系统是android应用系统框架最核心,最基础的内容! 1. Android视图系统.层次关系 Android应用设计和Web应用设计类似,也分前端和后端设 ...