当前位置: 首页 > news >正文

【每周一记-002】

公众号回复:OpenGL,领取学习资源大礼包

又到了每周一记的环节。

最近要调试 iOS 项目代码,XCode 用的特别频繁。

话说工作至今快四年了,从实习开始就一直用 Mac 开发,见证了办公设备从信仰灯到 TouchBar 的升级换代。

如今,刚接触时的新奇和兴奋感早已不复存在,用惯了之后甚至有的想说破烂 MBP ,时不时来个卡死黑屏重启三连。

有趣的是,大多数安卓开发同学,用了几年 Mac,如果不是因为兴趣和工作,可能都不会去打开 XCode ,至少我前两年都没怎么用过它。

最近这段时间的体验,既用到了 XCode 做功能开发编写代码,也用到了它做断点调试、性能优化处理,尤其是 Instruments 工具的使用。


对比一下 Android Studio 和 XCode 开发工具。

在代码编辑方面,可能是我更熟悉 AS 一点,感觉 Android Studio 比 XCode 强太多了,就举个例子,查看最近的文件:

这是 XCode 的:

这是 Android Studio 的:

对比一下,Android Studio 最近的文件都在顶部的那一栏展示,想看哪里点哪里,顶部展示不够还能用快捷键搜索,而且最近文件一栏上方就是文件路径。

而 XCode 那么大一栏就展示个文件路径,太浪费黄金位置了吧,想要找最近文件,还得手动点击一下,然后才能找到。

这一对比,高下立判,光查找最近文件这一功能点 Android Studio 完胜呀。

工欲善其事,必先利其器

在 Android Studio 开发时,我更喜欢使用各种快捷键,相当方便和快捷,在一定程度上是能够提高开发效率的,比如下面的操作:

  • 查找项目中的某个文件、类。

    • 双击 Shift

  • 查找最近使用过的文件

    • Command + E

  • 查找一个类里面的方法

    • Command + F12

  • 查找某个方法被调用的地方

    • Control + Option + H

  • 跳转某一行

    • Command + L

这几个查找方法是我经常用到的,上手 XCode 写代码时第一件事就是找对应的快捷键。

目前常用的:

  • Control + 6

    • 查找类某个方法、变量

  • Command + Shift + O

    • 查找某个类文件

  • Command + L

    • 跳转到某一行

  • Command + Shift + J

    • 定位类在项目文件中的位置

还好能找到对应的快捷键。就是得记住两套快捷键方案,有时候还容易弄混了,在 XCode 上想找某个文件时,不自觉双击了 Shift 。


在各种性能分析工具上面,Android Studio 有 Profiler ,XCode 有 Instruments 。如果就只是查看当前应用内存占用多少,显存占用多少,那两者都差不多了。

但体验过了 XCode 的内存泄漏检测功能,就回不去了。

在 Android 搞内存泄漏检测,又是使用 LeakCanary 又是 Hook malloc 方法的,面对这样那样的问题,大佬们总是能想出办法解决。

但在 XCode 上,直接用 Leak 工具就能搞定了。难怪有人说 iOS 开发工资拿的比安卓多,但工作内容还少一点,原来这是真的,现在转行还来得及嘛。

像这样直接操作,就能检测出有内存泄漏,然后还能找到泄漏的地方,告诉你是哪一行代码导致的。

虽说不能全部搞定内存泄漏吧,但至少节省很多时间了。那些显而易见的内存泄漏问题都可以通过这个来定位,妈妈再也不用担心我瞎几把写代码了。

不过,归根结底,Android Studio 和 XCode 都是开发工具啦,不存在说谁强谁弱的,各有优劣。对于 XCode 的使用,我也还不够深入,还得继续感受它的魅力。

但对于我们开发人员来说,哪个对于日常开发的帮助更大,就要用哪个,不管黑猫白猫,能抓住耗子的就是好猫。掌握更多的工具使用,百利而无一害。

当然,如果你有更好的一些开发工具使用和日常调高效率的办法,欢迎在评论区的留言~~~


技术交流,欢迎加我微信:ezglumes ,拉你入技术交流群。

扫码关注公众号【音视频开发进阶】,一起学习多媒体音视频开发~~~

喜欢就点个「在看」吧 ▽

相关文章:

  • iOS中使用OpenGL 实现增高功能
  • 五分钟用C++11实现Android系统的Handler机制
  • 从入门到进阶|如何基于WebRTC搭建一个视频会议
  • 【音视频连载-010】第二季 FFmpeg 日志打印
  • 如何将ijkplayer引入AS工程中进行二次开发
  • Android 性能优化必知必会
  • 音视频面试基础题
  • 2020年中国音频产业生态发展分析
  • 疫情下的网络视频行业观察 | 从疫情看网络视频领域竞争方向
  • 为什么小姐姐能摇一晚上不倒?
  • Android 热修复 AndFix 原理,看这篇就够了
  • 推荐几个堪称教科书级别的 Android 音视频入门项目
  • ffmpeg音视频同步的几种策略
  • 【Jetpack更新之Fragment】1.3.0-alpha04 来袭,Fragment 间通信的新姿势
  • Android使用OpenGL渲染ffmpeg解码的YUV数据
  • [笔记] php常见简单功能及函数
  • [译]Python中的类属性与实例属性的区别
  • 【译】理解JavaScript:new 关键字
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Android组件 - 收藏集 - 掘金
  • CSS实用技巧干货
  • Flex布局到底解决了什么问题
  • JAVA并发编程--1.基础概念
  • Java应用性能调优
  • Laravel核心解读--Facades
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • 从重复到重用
  • 机器学习 vs. 深度学习
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 蓝海存储开关机注意事项总结
  • 力扣(LeetCode)357
  • 十年未变!安全,谁之责?(下)
  • 首页查询功能的一次实现过程
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • #git 撤消对文件的更改
  • (10)STL算法之搜索(二) 二分查找
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (力扣)循环队列的实现与详解(C语言)
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (五)关系数据库标准语言SQL
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • .net core Swagger 过滤部分Api
  • .NET Core Web APi类库如何内嵌运行?
  • .NET DataGridView数据绑定说明
  • .Net 高效开发之不可错过的实用工具
  • .Net的C#语言取月份数值对应的MonthName值
  • .Net环境下的缓存技术介绍
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • [C++] Windows中字符串函数的种类
  • [C++]STL之map
  • [CISCN2021 Quals]upload(PNG-IDAT块嵌入马)