iOS探索--IOS学习路线总结

一、前言
移动互联网的迅速发展,产生了一批有一批的互联网巨头,由此作为开发者对于俩端技术的了解,以及俩端在使用和开发过程中的利好会进行分析。这篇文章主要针对我当时对IOS开发的基础知识学习的一个总结。

二、基本知识概括
学习一门语言,首先要了解这门语言包含哪些知识体系,这样才会方便我们学习。下面是我简单总结的学习路线知识图。
这里写图片描述

1.c语言基础
我想对于c语言大家都非常了解。大学中必须学习的一门课程。不管你现在在使用或学习那种语言,c语言是最核心的基础语言。c语言中我们能够把指针,结构体和数组等基本知识和语法弄懂,学习OC就不会有太大问题,此处就不在多说。
2.oc语言基础
刚开始学习oc语言时,其实在学习oc的基本类型、语法和相关API。
(1)基本语法:主要介绍类和方法的定义和使用。
简介:
OC中新建一个类会产生两个文件,一个是头文件.h,另一个是类实现文件.m;

文件简介:
.h :头文件。头文件包含类,类型,函数和常数的声明。
.m :源代码文件。这是典型的源代码文件扩展名,可以包含Objective-C和C代码。
.mm :源代码文件。带有这种扩展名的源代码文件,除了可以包含Objective-C和C代码以外还可以包含C++代码。仅在你的Objective-C代码中确实需要使用C++类或者特性的时候才用这种扩展名
.cpp:只能编译C++

一般.h文件中定义的是这个类的类型:

@interface 类名:NSObject{
定义属性
}
定义方法
@end

在.m中一般是类的具体实现:

@implementation
实现方法方法
@end

OC中定义类没有使用{},而是使用@关键字进行划分区域的。
在OC中定义方法也是和Java有些区别的:
方法说明 (返回类型) 方法名 : (参数类型)参数名称

a、方法说明有两种:
一种是减号:”-“,表示该方法是对象方法,就是必须用对象实例才能调用的
一种是加号:”+”,表示该方法是类方法,就是可以用类直接调用的,不需要实例化对象的,类似于Java中的static方法
b、返回类型:和Java语言很类似
(2)分类:分类可以使得不修改原来类的代码的基础上,对某个类进行方法的扩充。
(3)协议:在Objective-C中,不支持多继承,即不允许一个类有多个父类,但是OC提供了类似的实现方法,也就是协议。协议有点类似于Java里的接口,不同点就是在协议里,可以提供可选的方法,不要求全部继承。
协议包括正式协议和非正式协议:
  正式协议:其声明一个方法列表,协议的实现者需要实现声明的方法,可以使用@required和@optional关键字指定方法必须实现或可选实现,默认为必须实现。子类会继承其父类采用的协议,一个协议本身也可以采用别的协议
  非正式协议(类别):类别是Objective-C的一个语言特点,可以让你在无需子类化的前提下为一个类增加方法。凡是NSObject或其子类的类别,都是非正式协议。一个类不必实现非正式协议中的每个方法,只需实现它想要的方法就可以。声明非正式协议的类在向某个目标对象发送协议消息之前,必须首先向它发送respondsToSelector:消息并得到肯定的回答,才可以使用。
(4)Foundation框架:一些集合类,数据类等。Foundation框架常用结构体NSRange\CGRange、NSPoint\CGPoint、NSSize\CGSize、 NSRect\CGRect 。
(5)属性:OC的属性机制提供了一个默认的设置器和访问器的实现。
(6)kvc和kvo:KVC,即是指 NSKeyValueCoding,一个非正式的 Protocol,提供一种机制来间接访问对象的属性。KVO 就是基于 KVC 实现的关键技术之一。
3.UI知识,挑一些常用的分析
(1)基本View:UIBotton、UILabel、UIImageView、UISwitch、UITxetField、UIAlertView。
(2)高级View:UITableView、UIScrollView。
UITableView和Android中的ListView用法都差不多,而UIScrollView类似于Android中的ScrollView,但是他的功能比ScrollView强大很多,在iOS中实现分页,切换页都是使用这个控件进行操作的,而在Android中会使用ViewPager来实现。
(3)自定义View:继承UIView。在drawRect方法中使用CGContextRef类进行绘制各种图形即可。
(4)控制器:UINavigationController、UITabBarController
这两个控制器的使用场景是UINavigationController主要用来操作视图的导航功能,比如从一个页面跳转到另一个页面,这个控制器其实就是一个栈功能,进入的话就用push操作,出来的时候使用pop功能来实现指定的页面跳转功能,在Android中比较费劲还得使用Intent来进行startActivity操作。
UITabBarController功能主要是用来菜单视图切换功能,必须现在的微信页面中,底部的四个菜单切换功能。当然我们还可以自定义一个控制器功能。
(5)动画相关:CALayer、CoieAnimation
(6)事件相关:操作View所产生的事件。
4.多线程操作
(1)NSThread:基础线程类,直接操作线程。类似于Java中的Thread类
(2)NSOperation:类似于Java中的Runnable类
(3)NSOperationQueue:类似于Java并发库中的Queue类
(4)GCD:这个功能主要是C语言实现的,他的优势可以重复利用设备的多核硬件资源,让多线程操作更加高效,也是苹果官方提倡使用的一种方式
5.数据存储
(1)SQLite::数据库操作,和Android中底层使用的数据库是一样的,但是这里是采用的纯C语言实现的。
(2)Preference:保存用户的基本设置,和Android中的SharedPreference类似
(3)Plist:一般可以把数组和字典数据对象保存到本地的plist文件中.
(4)CoreData:ORM操作的,可以把对象和数据库表联系操作。
(5)NSKeyedArchiver:归档和解档,可以把对象进行序列化,和Java中的ObjectInputStream类似。

6.网络
(1)NSURL:定义一个网络访问的URL地址。
(2)NSURLRequest:网络访问请求对象,可以设置请求的参数设置。
(3)NSURLConnection:直接连接访问,系统自动创建一个子线程进行操作。
(4)UIWebView:访问网页内容,和Android中的WebView很类似,但是和Android中的WebView还是有一些区别的。
在Android中WebView的一个经典漏洞就是在JS中可以使用getClass获取到对象类对象,然后调用Runtime类执行命令获取设备数据信息,就是因为在Android中可以使用addJavascriptInterface方法设置本地对象导致的,在iOS中不可以这么做的,如果想在JS中调用本地方法的需要想其他办法。
7.常用开发框架
(1)网络访问框架:AFNetworking
(2)网络图片加载框架:SDWebImage
(3)列表下拉刷新框架:MJRefresh
(4)数据库操作框架:FMDB
(5)UIWebView和本地交互框架:WebViewJavascriptBridge
(6)数据缓存框架:YYKit

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值