Giter Site home page Giter Site logo

ios-knowledges's Introduction

iOS-Knowledges

Objective-C

基本语法

Runtime

Objective-C是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。 动态语言的优势在于:写代码时更具灵活性,可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等。 所以Objective-C只有编译器是不够的,还需要一个运行时系统来执行编译后的代码,这个运行时系统就是Objc Runtime。

内存管理

Objective-c有一套基于对象引用计数的内存管理体系。

Objective-c内存管理经历了几个阶段的演变。

手动引用计数MRC (Manual Referecen Counting)

自动引用计数ARC (Automatic Reference Counting)

推荐书籍

Swift

布局

iOS中进行界面布局有三种方式:代码手写UI、使用InterfaceBuilder进行xib布局、storyboard。

代码手写UI,完全通过手写代码布局,灵活性强,代码可重用,但开发效率低,而且必须到运行时才能知道布局效果。

xib,使用InterfaceBuilder可视化界面布局,所见即所得,开发效率高,但灵活性差。

storyboard,由多个xib以及导航关系合成,可看做是一组xib,以及xib之间的转换方式的集合。故事版清晰地展示出界面中的逻辑和层次结构。也是Apple对开发者的建议和未来的方向。

UIKit

布局自适应

Auto Layout、Size Classes

iOS6新增的Auto Layout和iOS8新增的Size Classes。

NSLayoutConstraint

通过代码创建约束实现Auto Layout,Apple难用的NSLayoutConstraint工厂。

Visual Format Language

同样也是通过代码创建约束,Visual Format Language基于字符串,不利于编译器检查,可读性差。

Masonry

轻量级的布局框架,简洁的链式语法,可读性高。

Cartography

利用Swift丰富的操作符重载特性,声明Auto Layout。

FLKAutoLayout

一个干净的原生API包装框架。

关于图片

Asset Catalog

Asset Catalog用来管理任意图片(包括app icon、启动图片)如@1x,@2x,@3x图片,使用的时候使用Asset名字。还可以可视化处理图片进行拉伸。

还可以通过使用向量图(PDFs)加入到asset catalogs,Xcode可以自动地根据它们生成位图。

关于@1x,@2x,@3x:iOS中图片通过@1x,@2x,@3x为不同分辨率的设备统一为一个尺寸所作的标记

设计规范、流程

数据存储、持久化

沙盒机制

IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。

1.每个应用程序都有自己的存储空间。

2.应用程序不能翻过自己的围墙去访问别的存储空间的内容。

3.应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。

NSUserDefaults

NSUserDefaults用于存储轻量级的本地数据,以键值对的方式存储。

Bundle

Bundle就是一个标准化分层化的路径,这个目录保存了可执行代码以及这些代码执行的时候需要的资源文件。

plist 属性列表

属性列表(Property List)文件是一种用来存储序列化后的对象的文件。属性列表文件的文件扩展名为.plist。

Core Data Core Data Class Overview

网络通信

AFNetworking

Json

iOS中经常要进行网络请求,请求到得一般是json字符串,一般会建一个Model 类来存放这些Json数据。这就需要编写一系列的序列化代码,来把json转换为Model。这很费时间,容易错,不容易修改。 使用一些第三方库能很好的解决了这个问题,而且更易用。

Mantle

Mantle能简化Cocoa和Cocoa Touch应用的model层,把json转换为Model。

事件通知

委托(Delegate)

Apple中经常用的委托执行回调。

Callback blocks (回调代码块)

block也可以实现回调,实现过程比委托回调更简洁。

NSNotificationCenter

一种类似广播的消息通知机制。观察者只需要向消息中心注册,当有地方发出这个消息的时候,通知中心会发送给注册这个消息的对象。

Key-Value Observing (KVO,键值编码)

KVO源于设计模式中的观察者模式,简单的说就是:指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者。

多线程

GCD(Grand Central Dispatch)

Core Graphics、Quartz 2D

Core Graphics框架是一组用于绘制2D图形的API,使用CPU进行计算。

Quartz 2D是Core Graphics的一部分,基于C的API。

Core Animation

Core Animation是iOS与OS X平台上负责图形渲染与动画的基础,可以动画视图和其他的可视元素,完成动画所需的绘帧。

国际化

推送

Xcode

关于Xcode的一些介绍和调试技巧。

工具、插件

CocoaPods

开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具。使用CocoaPods的目的是可以自动化、集中、直观的管理第三方开源库。配置安装CocoaPods需要同时配置Ruby环境。

其他

  • Host生成器,再也不用担心谷歌打不开,账号登陆不了谷歌,同步不了书签啦。

第三方平台

ios-knowledges's People

Contributors

vichychen avatar ren2881971 avatar

Watchers

James Cloos avatar Lance avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.