iOS小技能:入门iOS需要掌握的知识点

371 阅读7分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第32天,点击查看活动详情

引言

入门iOS需要掌握的知识点:

  1. 使用代码创建控件;–storyBoard 常用于入门学习
  2. 分别通过storyBoard和代码进行事件的监听,按钮在不同状态下的背景、文字、文字颜色。因为storyboard上面的界面是“固定死”的,有时候可能会在程序运行过程中动态地添加一些新的控件到界面上。

掌握如何用代码动态地添加控件: 比如QQ的聊天信息,是有人发出一条信息后才动态显示出来的

实际上,storyboard的本质就是根据图形界面描述转成相应的代码

  1. 制作简单的动画效果
  2. frame、center、bounds以及transform的使用

写代码过程,永远以实现最初目标为方向,避免满脑子的设计模式。

I 基础知识

1.1 UI控件概述

万物皆对象(属性+方法)

  1. 每一个UI控件都是一个对象;修改UI控件的状态,其实就是修改控件对象的属性
  2. 有些属性是每个UI控件都具备的,即所有的控件最终都是继承于UIView(UI控件的公共属性都定义在UIView中)。

掌握最主要、最常用的控件;因为iOS中控件的用法都是相似相通的,例如UIButton和UISwitch 的共同点是状态的切换,都继承于UIControl。

UIView&VC的基础概念:

  • UIView是负责显示的

  • UIViewController是负责控制的,通常屏幕上一个完整的"页面"对应一个控制器; 这个控制器负责该页面中的所有代码实现 在.h中添加方法声明,在.m中实现该方法

其他相关小知识:

  1. 退出键盘的代码实现原则:在所有的面向对象语言中,有一个原则“谁申请,谁释放”
  2. frame 不适合用于自动布局,自动布局只须程序员提供规则;因此自动布局常用bounds和center属性。

1.2 App ID和Bundle ID有什么不同?

  1. organization identifier :通常是反向域名

域名通常用来唯一标识一台主机:www.baidu.com->再分流到其他机器上

反向域名通常唯一标识一个产品:应用市场上,设计点对点与客户交流的(消息推送)或者活动打折的场景都要利用到反向域名

  1. bundle identifier:反向域名+产品名称

不支持中文,上架前需修改,但不影响开发。

  1. class prefix(类前缀): 取代C++的命名空间以及java的包概念,统一大写,通常为两个大写字母。

App ID和Bundle ID有什么不同?

App ID是一个组合字符串,它包括两个部分,一个是开发团队的ID,另一个是标识应用的Bundle ID,它们之间是用点隔开的。

开发团队的ID是苹果公司提供给开发者的,这个ID可以唯一标识一个开发团队;

Bundle ID是开发者自定义的唯一标识一个应用的。

一个团队的ID和不同的Bundle ID组合可以得到不同的App ID,这个App ID就可以标识该团队的不同的应用,开发者需要通过App ID来使自己的应用可以获取丰富的苹果服务,如iCloud服务等。

Bundle ID也就是App ID的后半部分,是一个App应用的唯一标识符,由开发者自定义,可以在Xcode工程中查看和设置(正式开发中一旦定义了是无法修改的,只能新建一个新的应用),在Xcode中全称叫作Bundle identifier。

Bundle ID是唯一确定一个应用的,Bundle ID的改变意味着变成了另一个应用。

例如,在同一个工程中,发布时可能会有试用版和Pro版,或者免费版和付费版,它们可以通过设置不同的Bundle ID来区分。

1.3 头文件的利用

要养成查看头文件的习惯, 头文件是Apple 最专业的,没过期的解释。

shift command +o

  1. Apple 通常在头文件中把最重要的属性放置于前面定义: 例如用于显示文本信息的UILabel,的头文件的*text属性放置于前面
  2. 头文件的跳转:command+点击;或者使用command+control+J 对于.h 中定义的属性类型不了解,可以使用command键 来快速查看对应的头文件
  3. 除了头文件可以看出继承线路,storyboard的Attributes Inspector也可以看出继承线路
  4. 头文件的前面部分通常是定义enumeration 类型,例如UIView.h 常常从141 行看起(Xcode版本Version 7.2.1 (7C1002))。

1.4 私有扩展

将不开放的方法和属性定义在私有扩展中,从而保证.h文件只定义开放的属性和方法,私有扩展定义的更多是属性。

1.5 什么是SpriteKit和SceneKit?

SpriteKit和SceneKit是苹果公司提供的分别用于开发2D游戏和3D游戏的框架。

目前苹果公司提供的游戏引擎有3个:用于2D游戏开发的SpriteKit框架、用于3D游戏开发的SceneKit框架和底层的游戏图形库Metal。

这3个框架引擎一起重新定义了基于iOS设备强大GPU的移动游戏开发。

另外,iOS平台常用的热门第三方2D游戏引擎为Cocos引擎,它包括Cocos2d-iphone和Cocos2d-x。

II xcode 快捷键

平常留意下快捷键,慢慢习惯使用它

  1. shift command +o:open quickly File or Symbols
  2. command +r :Build and then run the current scheme
  3. CMD + /: 注释或取消注释
  4. CTRL + .: 参数提示 – 与TAB键结合使用,进行代码自动补全
  5. ESC: 自动提示列表
  6. Tab 键, 代码自动补全
  7. Command ] : 代码块右移
  8. Command [ : 代码块左移
  9. control-Option-Up: 切换.h和.m
  10. Command-Shift-D: 快速打开文件
  11. Control-2: 快速浏览当前文件成员
  12. Alt-Command-Left/Right: 前一个/后一个编辑位置
  13. Command-Shift-E: 最大化文件编辑区域
  14. Control-/: 切换到下一个占位符(自动完成的时候)
  15. Control-.: 下一个自动完成提示
  16. Command-E: 使用当前选中内容查找
  17. Command-G: 在当前文件中查找下一个
  18. Command-Shift-F: 在项目中查找
  19. Command-Alt-Shift-T: 在Groups&Files里定位到当前编辑的文件
  20. Command+双击:浏览源文件
  21. Alt+双击:查找帮助

see also

移动端游戏能够稳定健康的上线依赖的四个方面:

  1. 前端展示:或者说客户端正常运行。性能稳定不崩溃,不过热
  2. 后端:或者游戏后台服务端的。不但要稳定,还要在有限的服务器资源下,承受大量并发在线用户;而且游戏中的每个模块都能承受大量的同时在线用户。
  3. 安全:包括客户端(防被破解,要防外挂,防协议被解析,防客户端本地数据的泄密)、服务端(防渗透,防中间人攻击,防加速齿轮,防DDOS分布式拒绝访问攻击
  4. 政策:如何符合政府的要求,避免因为不符合政府有关部门的要求而被下线,或下架,或关服

更多内容请关注 #小程序:iOS逆向,只为你呈现有价值的信息,专注于移动端技术研究领域;更多服务和咨询请关注#公众号:iOS逆向