自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

执着丶执念的博客

iOS学习,博客是从简书转过来的

  • 博客(49)
  • 收藏
  • 关注

原创 iOS学习笔记49-Swift(九)访问控制

一、Swift的访问控制Swift中的访问控制模型基于模块和源文件这两个概念 1. 模块 指的是Framework或App bundle。在Swift中,可以用import关键字引入自己的工程。 2. 源文件 指的是Swift中的Swift File,就是编写Swift代码的文件,它通常是属于某一个模块。Swift提供了三种不同的访问级别:Public:【使用public修饰】【范围大】

2016-05-03 14:24:57 466

原创 iOS学习笔记48-Swift(八)反射

一、Swift反射所谓反射就是可以动态获取类型、成员信息,在运行时可以调用方法、属性等行为的特性。 在使用OC开发时很少强调其反射概念,因为OC的Runtime要比其他语言中的反射强大的多。不过在Swift中并不提倡使用Runtime,而是像其他语言一样使用反射(Reflect),即使目前Swift中的反射功能还比较弱,只能访问获取类型、成员信息。Swift的反射机制是基于一个叫Mirror的结构体

2016-05-01 13:16:03 469

原创 iOS学习笔记47-Swift(七)泛型

一、Swift泛型介绍泛型是为Swift编程灵活性的一种语法,在函数、枚举、结构体、类中都得到充分的应用,它的引入可以起到占位符的作用,当类型暂时不确定的,只有等到调用函数时才能确定具体类型的时候可以引入泛型。 我们之前实际上已经使用过泛型,例如:Swift的Array和Dictionary类型都是泛型集。 你可以创建一个Int数组,也可创建一个String数组,或者甚至于可以是任何其他Swi

2016-04-30 13:38:08 6114 2

原创 iOS学习笔记46-Swift(六)扩展

一、Swift扩展扩展就是向一个已有的类、结构体或枚举类型添加新功能,这包括在没有权限获取原始源代码的情况下扩展类型的能力。 扩展和 Objective-C中的分类(category)类似,但是它要比分类强大的多,它不仅可以扩展类,还可以扩展协议、枚举、结构体,另外扩展也不局限于扩展方法,还可以扩展便利构造方法、计算属性、下标脚本等Swift中的扩展可以:添加计算属性和计算静态属性添加实例方法

2016-04-29 22:51:57 519 1

原创 iOS学习笔记45-Swift(五)协议

一、Swift协议协议是为方法、属性等定义一套规范,没有具体的实现,类似于Java中的抽象接口,它只是描述了方法或属性的骨架,而不是实现。方法和属性实现还需要通过定义类,函数和枚举完成。1. 协议定义//协议定义通过关键字protocolprotocol SomeProtocol { //协议定义}//协议可以继承一个或者多个协议protocol SomeProtocol2: Som

2016-04-27 23:49:55 478 1

原创 iOS学习笔记44-Swift(四)枚举和结构体

一、Swift的枚举枚举是一系相关联的值定义的一个公共的组类型,同时能够让你在编程的时候在类型安全的情况下去使用这些值。 Swift中的枚举比OC中的枚举强大得多, 因为Swift中的枚举是一等类型,它除了可以定义枚举值外,还可以在枚举中像类一样定义属性和方法1. 简单枚举定义和使用//定义枚举,使用enum关键字enum Method{ case Add case Sub

2016-04-26 12:42:58 2879

原创 iOS学习笔记43-Swift(三)类

一、Swift的类class作为一门面向对象语言,类也是Swift的非常重要的类型,我们先来看下一个简单的类//Swift中一个类可以不继承于任何其他基类,那么此类本身就是一个基类class Person { //定义属性 var name:String var height = 0.0 //构造器方法,注意如果不编写构造方法默认会自动创建一个无参构造方法

2016-04-25 12:20:15 2546

原创 iOS学习笔记42-Swift(二)函数和闭包

上一节我们讲了Swift的基础部分,例如数据类型、运算符和控制流等,现在我们来看下Swift的函数和闭包一、Swift函数函数是一个完成独立任务的代码块,Swift中的函数不仅可以像C语言中的函数一样作为函数的参数和返回值,而且还支持嵌套,支持函数参数默认值、可变参数等。/*1、在局部参数名前加上#来简写外部参数名(此时局部参数名和外部参数名相同)2、如果使用默认参数,那么此参数名将默认作为外部

2016-04-24 12:20:54 726

原创 iOS学习笔记41-Swift(一)基础部分

一、Swift语言介绍Swift是苹果2014年推出的全新的编程语言,它继承了C语言、ObjC的特性,且克服了C语言的兼容性问题。Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在其中你可以看到C#、Java、Javascript、Python等多种语言的影子。在2015年的WWDC上,苹果还宣布Swift的新版本Swift2.0,并在之后宣布Swift开源

2016-04-23 10:10:35 433

原创 iOS学习笔记40-日志重定向

一、日志重定向我们在iOS开发过程中,我们时常会使用NSLog打印到控制台的日志信息进行代码调试,但这样调试的前提是连接上Xcode。 如果进行真机调试但同时又不能连接Xcode的时候,就不能直接在xcode的控制台查看输出日志了,但是程序还是会执行那些Log的,如果要查看这些日志,我们就需要把输出日志信息保存到文件中,然后进行查看。标准NSLog的打印默认是往标准错误(stderr)进行打印的,

2016-04-22 12:30:56 412

原创 iOS学习笔记39-ReactiveCocoa入门

一、响应式编程范式FRPFRP,全称为Functional Reactive Programming,是一种响应变化的编程范式,最近几年比较火,大概的理解就像这样: 当a的值或者b的值发生变化时,c的值会自动响应a的值或b的值变化的信号,自动更正自己的值,类似这种编程思想就称为FRP。FRP提供了一种信号机制来实现这样的效果,通过信号来记录值的变化。信号可以被叠加、分割或合并。通过对信号的组合

2016-04-21 14:31:33 1462

原创 iOS学习笔记38-MJExtension使用

一、MJExtension第三方框架我们在iOS开发过程中,我们常常需要将字典数据(也就是JSON数据)与Model模型之间的转化,例如网络请求返回的微博数据、等等,如果我们自己全部手动去创建模型并赋值,都是一些毫无技术含量的代码,费时费力,而且还可能会赋值出错,让我们很头疼。MJExtension框架就是为了解决这个问题而设计得第三方开源库。这个开源库是之前传智博客的讲师李明杰老师写的,现在他自己

2016-04-20 13:18:21 2428

原创 iOS学习笔记37-时间和日期计算

一、时间和日期计算我们在应用开发中,时常需要和时间打交道,比如获取当前时间,获取两个时间点相隔的时间等等,在iOS开发中与时间相关的类有如下几个: 1. NSDate:表示一个绝对的时间点 2. NSTimeZone:时区信息 3. NSLocale:本地化信息 4. NSDateComponents:一个封装了具体年月日、时秒分、周、季度等的类 5. NSCalendar:日历类,它提供

2016-04-19 18:35:57 2354 1

原创 iOS学习笔记36-Masonry自动布局

一、Masonry介绍之前我们在屏幕适配的章节中学习过AutoLayout的使用,但那都是在可视化界面上进行添加约束完成的,我们很多时候都需要在代码中使用AutoLayout约束,苹果也为我们提供了实现,使用NSLayoutConstraint类表示约束,但使用起来比较复杂,代码量比较大,例如创建一个约束的方法:+ (id)constraintWithItem:(id)view1 /* 一个UIVi

2016-04-19 09:12:58 1899

原创 iOS学习笔记35-社交分享

一、社交分享现在很多应用都内置“社交分享”功能,可以将看到的新闻、博客、广告等内容分享到微博、微信、QQ、人人网等,其实从iOS6.0开始苹果官方就内置了Social.framework专门来实现社交分享功能,利用这个框架开发者只需要几句代码就可以实现内容分享。Social框架使用步骤:导入Social.framework框架,添加头文件#import <Social/Social.h>创建分

2016-04-18 18:02:26 445

原创 iOS学习笔记34-加速计和陀螺仪

一、CoreMotion框架介绍我们知道有一些iOS的应用,会有一些特殊的要求,比如: 1. 电子罗盘指南针之类的应用:让我们知道方向。 2. 运动类型软件:让我们知道我们跑步多少公里。 3. 社交软件中的摇一摇功能。 4. 游戏中扮演角色类中根据设备的晃动等进行操作。其实,他们多半是使用了iOS中的一个核心运动框架CoreMotion.framework使用iOS提供给我们的CoreMo

2016-04-18 09:25:17 2840

原创 iOS学习笔记33-UICollectionView入门

一、UICollectionView介绍UICollectionView和UICollectionViewController类是iOS6新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局,用法类似于UITableView和UITableViewController类,但也有所不同。 UICollectionView可以实现如下效果,也是一个常用的控件: 二、UICollectiom

2016-04-17 16:49:39 3179

原创 iOS学习笔记32-iCloud入门

一、iCloud云服务iCloud是苹果提供的云端服务,用户可以将通讯录、备忘录、邮件、照片、音乐、视频等备份到云服务器并在各个苹果设备间直接进行共享而无需关心数据同步问题,甚至即使你的设备丢失后在一台新的设备上也可以通过Apple ID登录同步。苹果已经将云端存储功能开放给开发者,可以存储两类数据:key-value data: 分享小量的非关键配置数据到应用的多个实例,使用类似于NSUser

2016-04-17 09:39:06 2954

原创 iOS学习笔记31-从图册获取图片和视频

一、从图册中获取本地图片和视频从图册中获取文件,我们使用的是UIImagePickerController,这个类我们在之前的摄像头中使用过,这里是链接:iOS学习笔记27-摄像头,这里我们使用的是它的另外一个功能,那就是从图册中获取图片和视频基本步骤:创建UIImagePickerController对象,并设置代理设置拾取源为图册,设置可编辑属性如果只是获取图片,就设置图片的媒体类型,如果

2016-04-16 22:47:45 530

原创 iOS学习笔记30-系统服务(三)蓝牙

一、蓝牙随着蓝牙低功耗技术BLE(Bluetooth Low Energy)的发展,蓝牙技术正在一步步成熟,如今的大部分移动设备都配备有蓝牙4.0,相比之前的蓝牙技术耗电量大大降低。在iOS中进行蓝牙传输常用的框架有如下几种:GameKit.framework: iOS7之前的蓝牙框架,只可用于同应用之间的蓝牙传输。MultipeerConnectivity.framework: iOS7开

2016-04-16 16:30:51 4363

原创 iOS学习笔记29-系统服务(二)通讯录

一、通讯录iOS中的通讯录是存储在数据库中的,由于iOS的权限设计,开发人员是不允许直接访问通讯录数据库的,实现通讯录操作需要使用到AddressBook.framework框架。AddressBook.framework框架:可以从底层去操作通讯录的所有信息,做到精确控制是基于C语言编写的,无法使用ARC管理内存,需要开发者手动管理内存需要自构UI界面iOS还提供了另外一个框架来供开发者操

2016-04-16 09:01:09 3435

原创 iOS学习笔记28-系统服务(一)短信和邮件

一、系统应用在开发某些应用时,我们可能希望能够调用iOS系统内置的电话、短信、邮件、浏览器应用,或者直接调用安装的第三方应用,这个要怎么实现呢?这里统一使用UIApplication的一个对象方法来实现://打开不同的系统应用- (void)openUrl:(NSURL *)url;那怎么区分我是要打电话还是发短信等等呢? 之前我们学习网络的时候,是不是URL最前面使用的是http://,使用本

2016-04-15 17:47:28 4136

原创 iOS学习笔记27-摄像头

一、摄像头在iOS中,手机摄像头的使用有以下两种方法: 1. UIImagePickerController拍照和视频录制 * 优点:使用方便,功能强大 * 缺点:高度封装性,无法实现一些自定义工作 2. AVFoundation框架实现 * 优点:灵活性强,提供了很多现成的输入设备和输出设备,还有很多底层的内容可以供开发者使用 * 缺点:需要和底层打交道,学习难度大,使用复杂我

2016-04-15 09:20:57 3154

原创 iOS学习笔记26-视频播放

一、视频在iOS中播放视频可以使用两个框架来实现: 1. MediaPlayer框架的MPMoviePlayerController和MPMoviePlayerViewController 2. AVFoundation框架中的AVPlayer 3. AVKit框架的AVPlayerViewController【iOS8之后才有】但在近两年的WWDC上,MediaPlayer框架被iOS9标记

2016-04-14 16:40:05 3322 1

原创 iOS学习笔记25-录音和网络流媒体

一、录音AVFoundation框架还有一个AVAudioRecorder类专门处理录音操作,它同样支持多种音频格式。先来了解下AVAudioRecorder的常用属性:@property (readonly, getter=isRecording) BOOL recording;//是否正在录音@property (readonly) NSDictionary<NSString *, id> *

2016-04-14 08:53:22 2105

原创 iOS学习笔记24-不断进化的屏幕适配

一、屏幕适配iOS的屏幕适配可以分为3大块,代表着不同时期的屏幕适配主流: 1. AutoResizing: 在iOS6之前,完全能够胜任,因为当时苹果只有3.5寸屏,加上比较少的支持横屏,它有非常大的局限性:只能相对于父控件布局 2. AutoLayout: 在iOS6之后,苹果多了几个尺寸屏幕,AutoResizing已经无能为力了,这时候苹果推出了AutoLayout,功能十分强大,可

2016-04-13 22:21:59 633

原创 iOS学习笔记23-音效与音乐

一、音频在iOS中,音频播放从形式上可以分为音效播放和音乐播放。 * 音效: * 主要指一些短音频的播放,这类音频一般不需要进行进度、循环等控制。 * 在iOS中,音效我们是使用AudioToolbox.framework框架实现。 * 音乐: * 主要指一些较长的音频,通常需要对播放进行精确控制。 * 在iOS中,音乐我们是使用AVFoundation.framework框架实

2016-04-13 15:22:07 2035 1

原创 iOS学习笔记22-推送通知

一、推送通知推送通知就是向用户推送一条信息来通知用户某件事件,可以在应用退到后台后,或者关闭后,能够通过推送一条消息通知用户某件事情,比如版本更新等等。推送通知的常用应用场景:一些任务管理APP,会到任务时间即将到达时,通知你该做任务了。健身APP定时提醒你应该健身了。买过电影票,提前半个小时通知你,电影即将开场。当你QQ或微信收到信息时,即使退到后台,也可以收到信息通知你。电商APP,推

2016-04-13 08:52:25 2050

原创 iOS学习笔记21-推送证书与秘钥申请

温馨提示:这节的内容以图片为主,大家最好能在有WiFi下观看,不然的话烧流量就不关我的事了。O(∩_∩)O~。一、iOS证书iOS常用的证书包括开发证书和发布证书,无论是真机调试还是最终发布应用到App Store这两个证书都是必须的,它是iOS开发的基本证书。Xcode7以后真机调试就不需要开发证书,真是开发者的福音啊!我再也不用为没有开发者账号而不能真机调试而担心了,(^o^)/~。 * 开发

2016-04-12 22:23:29 709

原创 iOS学习笔记20-地图(二)MapKit框架

一、地图开发介绍从iOS6.0开始地图数据不再由谷歌驱动,而是改用自家地图,当然在国内它的数据是由高德地图提供的。在iOS中进行地图开发主要有三种方式:利用MapKit框架进行地图开发,利用这种方式可以对地图进行精准的控制调用苹果官方自带的地图应用,主要用于一些简单的地图应用,无法精确控制使用第三方地图开发SDK库用得最多的还是MapKit,所以这节就只讲MapKit的使用。二、MapKit

2016-04-12 16:04:05 2718

原创 iOS学习笔记19-地图(一)定位CoreLocation

一、定位介绍现在很多社交、电商、团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的。的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式。要实现地图、导航功能,往往需要先熟悉定位功能。在iOS中通过CoreLocation框架进行定位操作。 CoreLocation自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图开发要配

2016-04-12 09:52:25 2322 1

原创 iOS学习笔记18-CoreData你懂的

一、CoreData介绍CoreData是iOS5之后新出来的的一个框架, 是对SQLite进行一层封装升级后的一种数据持久化方式。 它提供了对象<-->关系映射的功能,即能够将OC对象转化为数据存储到SQLite数据库文件中,同时也能将数据库中的数据还原成OC对象。相较于SQLite,我们使用CoreData就不需要再编写任何SQL语句,再也不去纠结SQL语句怎么写了O(∩_∩)O哈~。二、Co

2016-04-11 23:09:59 482

原创 iOS学习笔记17-FMDB你好!

上一节我已经介绍了SQLite的简单使用,不了解的可以提前去看一下iOS学习笔记16-数据库SQLite,这节我们来讲下FMDB。一、FMDB介绍FMDB是一种第三方的开源库,FMDB就是对SQLite的API进行了封装,加上了面向对象的思想,让我们不必使用繁琐的C语言API函数,比起直接操作SQLite更加方便。FMDB优点:使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码对比苹果自带的

2016-04-11 15:32:10 445

原创 iOS学习笔记16-数据库SQLite

一、数据库在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等。离线缓存一般都是把数据保存到项目的沙盒中。有以下几种方式: 1. 归档:NSKeyedArchiver 2. 偏好设置:NSUserDefaults 3. plist存储:writeToFile上述的使用可以参考iOS学习笔记15-序列化、偏好设置和归档,但上述三种方法都有一个致命的缺点,那就是都无法存储大批量

2016-04-11 15:31:42 1798

原创 iOS学习笔记15-序列化、偏好设置和归档

一、本地持久化所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据。在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: 1. plist文件(序列化) 2. preference(偏好设置) 3. NSKeyedArchiver(归档) 4. SQLite3 5. CoreData本节我就只写关于归档、偏好设置和属性列表的,这些

2016-04-11 15:31:17 609

原创 iOS学习笔记14-网络(三)WebView

一、WebViewWebView就是一个内嵌浏览器控件,在iOS中主要有两种WebView:UIWebView和WKWebView,UIWebView是iOS2之后开始使用,WKWebView是在iOS8开始使用,毫无疑问WKWebView将逐步取代笨重的UIWebView。WKWebView的优点: WKWebView更多的支持HTML5的特性 WKWebView更快,占用内存可能只

2016-04-11 15:30:50 3294 1

原创 iOS学习笔记13-网络(二)NSURLSession

在2013年WWDC上苹果揭开了NSURLSession的面纱,将它作为NSURLConnection的继任者。现在使用最广泛的第三方网络框架:AFNetworking、SDWebImage等等都使用了NSURLSession。作为iOS开发人员,应该紧随苹果的步伐,不断的学习,无论是软件的更新、系统的更新、API的更新,而不能墨守成规。 * 相比较NSURLConnection,NSURLSes

2016-04-11 15:30:15 699

原创 iOS学习笔记12-网络(一)NSURLConnection

一、网络请求在网络开发中,需要了解一些常用的请求方法:GET请求:get是获取数据的意思,数据以明文在URL中传递,受限于URL长度,所以传输数据量比较小。POST请求:post是向服务器提交数据的意思,提交的数据以实际内容形式存放到消息头中进行传递,无法在浏览器url中查看到,大小没有限制。HEAD请求:请求头信息,并不返回请求数据体,而只返回请求头信息,常用用于在文件下载中取得文件大小、类

2016-04-11 15:29:48 1143

原创 iOS学习笔记11-多线程入门

一、iOS多线程iOS多线程开发有三种方式:NSThreadNSOperationGCDiOS在每个进程启动后都会创建一个主线程,更新UI要在主线程上,所以也称为UI线程,是其他线程的父线程。线程和进程的区别傻傻分不清楚:线程(thread):用于指代独立执行的代码段。进程(process):用于指代一个正在运行的可执行程序,它可以包含多个线程。二、NSThreadNSThreadhi

2016-04-11 15:29:05 1665

原创 iOS学习笔记10-UIView动画

上次学习了iOS学习笔记09-核心动画CoreAnimation,这次继续学习动画,上次使用的CoreAnimation很多人感觉使用起来很繁琐,有没有更加方便的动画效果实现呢?答案是有的,那就是UIView动画封装一、UIView动画苹果知道图层动画使用麻烦,就为我们封装到了UIView里,使我们可以简单的实现各种动画效果。1. 基础动画主要实现方法为:+ (void)animateWithDur

2016-04-11 15:15:58 788

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除