随笔分类 - iOS

摘要:做过iOS开发的同学相信对于GCD(Grand Central Dispatch)并不陌生,因为在平时多线程开发过程中GCD应该是使用最多的技术甚至它要比它的上层封装NSOperation还要常用,其中最主要的原因是简单易用功能强大。本文将从GCD的原理和使用两个层面分析GCD的内容,本文会结合源码和实例分析使用GCD的注意事项,源码解读部分主要通过注释源码的方式方便进行源码分析,具体到细节通过在源码解释说明。 阅读全文
posted @ 2020-07-09 11:31 KenshinCui 阅读(95) 评论(0) 推荐(0) 编辑
摘要:说起iOS的OOM问题大家第一想到的应该更多的是内存泄漏(Memory Leak),因为无论是从早期的MRC还是2011年Apple推出的ARC内存泄漏问题一直是iOS开发者比较重视的问题,比如我们熟悉的 Instruments Leaks 分析工具,Xcode 8 推出的 Memory Graph 等都是官方提供的内存泄漏分析工具,除此之外还有类似于[FBRetainCycleDetector](https://github.com/facebook/FBRetainCycleDetector)的第三方工具。不过事实上内存泄漏仅仅是造成OOM问题的一个原因而已,实际开发过程中造成OOM的原因有很多,本文试图从实践的角度来分析造成OOM的诸多情况以及解决办法。 阅读全文
posted @ 2020-06-17 17:28 KenshinCui 阅读(385) 评论(0) 推荐(0) 编辑
摘要:相信稍微接触过iOS图片相关操作的同学都遇到过图片旋转的问题,另外使用[AVFoundation](https://developer.apple.com/documentation/avfoundation/cameras_and_media_capture/capturing_still_and_live_photos)进行拍照的话就会遇到前后摄像头切换[mirror](https://developer.apple.com/documentation/avfoundation/avcaptureconnection/1389172-isvideomirrored)问题就让人更摸不着头脑了。今天就简单和大家聊一下iOS的图片方向问题。 阅读全文
posted @ 2020-02-03 16:17 KenshinCui 阅读(421) 评论(0) 推荐(0) 编辑
摘要:滤镜最早的出现应该是应用在相机镜头前实现自然光过滤和调色的镜片,然而在软件开发中更多的指的是软件滤镜,是对镜头滤镜的模拟实现。当然这种方式更加方便快捷,缺点自然就是无法还原拍摄时的真实场景,例如无法实现偏光镜和紫外线滤色镜的效果。今天简单介绍一下iOS滤镜开发中的正确姿势,让刚刚接触滤镜开发的朋友少走弯路。 阅读全文
posted @ 2020-01-12 02:35 KenshinCui 阅读(559) 评论(0) 推荐(0) 编辑
摘要:我们都知道Xcode默认的调试器是LLDB(在此之前使用的是GDB),但是关于LLDB的debug技巧并非所有人都比较清楚,可能所有人都知道p或者po命令打印一些变量。但是实际的情况时这些还远远不够。比如说有没有一些情况下crash无法定位到有用信息,直接出现exc_bad_access,有没有遇到过每次调试一个UI就要重新run一次Xcode(话说编译时间真的影响一个UI开发者的效率)。 阅读全文
posted @ 2019-11-28 20:30 KenshinCui 阅读(1473) 评论(2) 推荐(2) 编辑
摘要:概述PhotoKit应该是iOS 8 开始引入为了替代之前ALAssetsLibrary的相册资源访问的标准库,后者在iOS 9开始被弃用。当然相对于ALAssetsLibrary其扩展性更高,api使用起来也更加的强大,但这并非今天讨论的重点,这里主要讨论PhotoKit使用的一些技巧和容易踩的坑。PHImageManager or Custom访问相册资源常用的操作还是获取资源,比如获取一张相... 阅读全文
posted @ 2019-11-17 16:03 KenshinCui 阅读(323) 评论(0) 推荐(0) 编辑
摘要:概述所谓智能裁剪其实就是按照指定尺寸裁剪或显示出包含图片核心特征的区域,目前很多智能裁剪都是在服务器端做的,在客户端需要访问时直接裁剪放到Redis或者提前裁剪好以备访问。但是找了一圈直接在iOS客户端进行裁剪的库还不多,或者使用成本比较高,不能即拿即用。但是有时候客户端可能并非直接从服务器端获取数据而是读取相册数据,不可能先把图片存放到服务器端裁剪然后再拿来用,考虑到这种场景也不再少数,因此就... 阅读全文
posted @ 2018-12-12 15:08 KenshinCui 阅读(1784) 评论(2) 推荐(0) 编辑
摘要:缓存组件应该说是每个客户端程序必备的核心组件,试想对于每个界面的访问都必须重新请求势必降低用户体验。但是如何处理客户端缓存貌似并没有统一的解决方案,多数开发者选择自行创建数据库直接将服务器端请求的JSON(或Model)缓存起来,下次请求则查询数据库检查缓存是否存在;另外还有些开发者会选择以归档文件的方式保存缓存数据,每次请求资源之前检查相应的缓存文件。事实上iOS系统自身就提供了一套缓存机制,本文将结合URL Loading System介绍一下如何利用系统自身缓存设计来实现一套缓存机制,使用这套缓存设计你无需自己编写内存和磁盘存储,无需自行检查缓存过期策略就能轻松实现数据缓存。 阅读全文
posted @ 2017-06-05 14:37 KenshinCui 阅读(9817) 评论(5) 推荐(14) 编辑
摘要:RunLoop作为iOS中一个基础组件和线程有着千丝万缕的关系,同时也是很多常见技术的幕后功臣。尽管在平时多数开发者很少直接使用RunLoop,但是理解RunLoop可以帮助开发者更好的利用多线程编程模型,同时也可以帮助开发者解答日常开发中的一些疑惑。本文将从RunLoop源码着手,结合RunLoop的实际应用来逐步解开它的神秘面纱。 阅读全文
posted @ 2017-05-08 10:35 KenshinCui 阅读(36560) 评论(20) 推荐(19) 编辑
摘要:在iOS系统中,如果控制器是以push方式进行管理的话,那么事实上多个控制器是共享的同一个导航栏。当然iOS系统的设计无可厚非,但是国内的应用经常会遇到很多个性的设计,就比如说A push到 B,A可能有导航栏,但是B控制器要求导航栏是透明的,这样一来A和B由于共用同一个导航栏就会让整个切换操作不易管理,何况从iOS 7开始不仅仅是点击返回按钮瞬间返回A那么简单,还要支持通过手势操作从B缓慢返回到A的导航栏渐变效果。本文就简单看一下如何能够更加合理的设计导航栏切换的效果以避免开发中由于导航栏管理不善而造成管理混乱的状况。 阅读全文
posted @ 2017-05-07 16:09 KenshinCui 阅读(6171) 评论(14) 推荐(16) 编辑
摘要:UITableView是iOS开发中使用频率最高的UI控件,在前面的[文章](http://www.cnblogs.com/kenshincui/p/3931948.html)中对于UITableView的具体用法有详细的描述,今天主要看一些UITableView开发中的常见一些坑,这些坑或许不深,但是如果开发中注意不到的话往往比较浪费时间。 阅读全文
posted @ 2017-04-14 14:50 KenshinCui 阅读(5381) 评论(5) 推荐(10) 编辑
摘要:UIScrollViewj尽管继承于UIView,但它是一个相对比较特殊的视图,特别是当它遇到了AutoLayout之后。在UIScrollView中使用AutoLayout的目的除了使用相对约束确定子控件的位置和大小外,更重要的是如何自动计算出UIScrollView的contentSize(关于使用UIScrollView并且最终手动指定contentSize的AutoLayout用法不再今天讨论之列,严格意义上来说这也不是一种真正的UIScrollView的AutoLayout应用)。 阅读全文
posted @ 2017-02-25 10:50 KenshinCui 阅读(2998) 评论(6) 推荐(9) 编辑
摘要:在iOS 8中,苹果引入了UITableView的一项新功能--Self Sizing Cells,对于不少开发者来说这是新SDK中一项非常有用的新功能。在iOS 8之前,如果想在表视图中展示可变高度的动态内容时,你需要手动计算行高,而Self Sizing Cells为展示动态内容提供了一个解决方案。 阅读全文
posted @ 2017-02-12 16:50 KenshinCui 阅读(14720) 评论(12) 推荐(10) 编辑
摘要:从iOS 8 开始Apple引入了扩展(Extension)用于增强系统应用服务和应用之间的交互。它的出现让自定义键盘、系统分享集成等这些依靠系统服务的开发变成了可能。WWDC 2016上众多更新也都是围绕扩展这一主题来进行了的,例如开发的Siri、iMessage Apps其实都是依靠扩展来工作的。在最新的Xcode 8 beta中也增加了众多的Extension 模板帮助开发者更快的实现不同类型的扩展。因此今天有必要介绍一下扩展相关的开发内容。 阅读全文
posted @ 2016-07-05 19:39 KenshinCui 阅读(11167) 评论(11) 推荐(14) 编辑
摘要:从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行。在WWDC16上Apple公布了Swift3.0,从中可以看出Apple对Swift的重视,以及Swift开源半年以来的进步。尽管对于开发人员来说Swift3.0的变化会令你的程序几乎处处报错,但是试想一下如果Apple没有追求极致的精神又怎么会做出如此多的更改。今天的文章将重点介绍:What's new in Swift 3.0?从Swift编译器和标准库两个方面来说明从Swift3.0的变化。 阅读全文
posted @ 2016-06-17 18:49 KenshinCui 阅读(46441) 评论(8) 推荐(7) 编辑
摘要:上一篇文章《iOS开发系列--Swift语言》中对Swift的语法特点以及它和C、ObjC等其他语言的用法区别进行了介绍。当然,这只是Swift的入门基础,但是仅仅了解这些对于使用Swift进行iOS开发还是不够的。在这篇文章中将继续介绍一些Swift开发中一些不常关注但是又必备的知识点,以便对Swift有进一步的了解。 阅读全文
posted @ 2015-09-21 00:01 KenshinCui 阅读(37764) 评论(16) 推荐(26) 编辑
摘要:Swift是苹果2014年推出的全新的编程语言,它继承了C语言、ObjC的特性,且克服了C语言的兼容性问题。Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在其中你可以看到C#、Java、Javascript、Python等多种语言的影子。同时在2015年的WWDC上苹果还宣布Swift的新版本Swift2.0,并宣布稍后Swift即将开源,除了支持iOS、OS X之外还将支持linux。 本文将继续iOS开发系列教程,假设读者已经有了其他语言基础(强烈建议初学者从本系列第一章开始阅读,如果您希望从Swift学起,那么推荐你首先阅读苹果官方电子书《the swift programming language》),不会从零基础一点点剖析这门语言的语法,旨在帮助大家快速从ObjC快速过度到Swift开发中。即便如此,要尽可能全面的介绍Swift的语法特点也不是一 阅读全文
posted @ 2015-08-10 12:09 KenshinCui 阅读(35908) 评论(61) 推荐(89) 编辑
摘要:iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录、微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等。今天将和大家一起学习如何使用系统应用、使用系统服务: 调用系统应用 使用系统服务 短信与邮件 通讯录 蓝牙 社交 Game Center 应用内购买 iCloud Passbook 阅读全文
posted @ 2015-01-13 09:16 KenshinCui 阅读(60203) 评论(54) 推荐(129) 编辑
摘要:随着移动互联网的发展,如今的手机早已不是打电话、发短信那么简单了,播放音乐、视频、录音、拍照等都是很常用的功能。在iOS中对于多媒体的支持是非常强大的,无论是音视频播放、录制,还是对麦克风、摄像头的操作都提供了多套API。在今天的文章中将会对这些内容进行一一介绍 阅读全文
posted @ 2014-12-26 09:15 KenshinCui 阅读(306259) 评论(96) 推荐(293) 编辑
摘要:在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情。iOS中通知机制又叫消息机制,其包括两类:一类是本地通知;另一类是推送通知,也叫远程通知。两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同。今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会补充通知中心的内容避免初学者对两种概念的混淆。 本地通知 推送通知 补充--iOS开发证书、秘钥 补充--通知中心 阅读全文
posted @ 2014-12-17 08:29 KenshinCui 阅读(152453) 评论(35) 推荐(89) 编辑
摘要:现在很多社交、电商、团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的。的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式。例如你到了一个陌生的地方想要查找附近的酒店、超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品。总之,目前地图和定位功能已经大量引入到应用开发中。今天就和大家一起看一下iOS如何进行地图和定位开发。 定位 地图 阅读全文
posted @ 2014-11-27 08:52 KenshinCui 阅读(193423) 评论(33) 推荐(109) 编辑
摘要:在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库。例如前面IOS开发系列—Objective-C之Foundation框架的文章中提到归档、plist文件存储,包括偏好设置其本质都是存储为文件,只是说归档或者plist文件存储可以选择保存到沙盒中,而偏好设置系统已经规定只能保存到沙盒的Library/Preferences目录。当然,文件存储并不作为本文的重点内容。本文重点还是说数据库存储,做过数据库开发的朋友应该知道,可以通过SQL直接访问数据库,也可以通过ORM进行对象关系映射访问数据库。这两种方式恰恰对应iOS中SQLite和Core Data的内容,在此将重点进行分析: SQLite Core Data FMDB 阅读全文
posted @ 2014-11-06 09:07 KenshinCui 阅读(58146) 评论(29) 推荐(45) 编辑
摘要:大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的。如今,网络编程越来越普遍,孤立的应用是没有生命力的。今天就会给大家介绍这部分内容: Web请求和响应 NSURLSession UIWebView 网络状态 阅读全文
posted @ 2014-10-22 08:34 KenshinCui 阅读(79803) 评论(56) 推荐(112) 编辑
摘要:大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算。可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行。但是机器码是按顺序执行的,一个复杂的多步操作只能一步步按顺序逐个执行。改变这种状况可以从两个角度出发:对于单核处理器,可以将多个步骤放到不同的线程,这样一来用户完成UI操作后其他后续任务在其他线程中,当CPU空闲时会继续执行,而此时对于用户而言可以继续进行其他操作;对于多核处理器,如果用户在UI线程中完成某个操作之后,其他后续操作在别的线程中继续执行,用户同样可以继续进行其他UI操作,与此同时前一个操作的后续任务可以分散到多个空闲CPU中继续执行(当然具体调度顺序要根据程序设计而定),及解决了线程阻塞又提高了运行效率。苹果从iPad2 开始使用双核A5处理器(iPhone中从iPhone 4S开始使用),A7中还加入了协处理器,如何充分 阅读全文
posted @ 2014-09-20 23:34 KenshinCui 阅读(119352) 评论(71) 推荐(115) 编辑
摘要:在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画、关键帧动画、动画组、转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等。在今天的文章里您可以看到动画操作在iOS中是如何简单和高效,很多原来想做但是苦于没有思路的动画在iOS中将变得越发简单: CALayer Core Animation UIView动画封装 阅读全文
posted @ 2014-09-15 06:29 KenshinCui 阅读(115185) 评论(112) 推荐(200) 编辑
摘要:在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架。今天我们将围绕iOS中两大图形、图形绘图框架进行介绍:Quartz 2D绘制2D图形和Core Image中强大的滤镜功能。 Quartz 2D 基本图形绘制 视图刷新 其他图形上下文 Core Image 阅读全文
posted @ 2014-09-06 23:33 KenshinCui 阅读(86960) 评论(69) 推荐(113) 编辑
摘要:iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计。今天我们就针对iOS的触摸事件(手势操作)、运动事件、远程控制事件等展开学习: iOS事件简介 触摸事件 手势识别 运动事件 远程控制事件 阅读全文
posted @ 2014-09-02 06:33 KenshinCui 阅读(76132) 评论(46) 推荐(70) 编辑
摘要:在iOS开发中视图的切换是很频繁的,独立的视图应用在实际开发过程中并不常见,除非你的应用足够简单。在iOS开发中常用的视图切换有三种,今天我们将一一介绍: UITabBarController UINavigationController 模态窗口 阅读全文
posted @ 2014-08-28 08:27 KenshinCui 阅读(116816) 评论(64) 推荐(80) 编辑
摘要:在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信、QQ、新浪微博等软件基本上随处都是UITableView。当然它的广泛使用自然离不开它强大的功能,今天这篇文章将针对UITableView重点展开讨论。今天的主要内容包括: 基本介绍 数据源 代理 性能优化 UITableViewCell 常用操作 UITableViewController MVC模式 阅读全文
posted @ 2014-08-23 23:20 KenshinCui 阅读(238672) 评论(115) 推荐(215) 编辑
摘要:UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件。在这个系列中如果每个控件都介绍一遍确实没有必要,所谓授人以鱼不如授人以渔,这里会尽可能让大家明白其中的原理,找一些典型的控件进行说明,这样一来大家就可以触类旁通。今天我们主要来看一下UIScrollView的内容: UIView UIScrollView 实战--图片浏览器 阅读全文
posted @ 2014-08-15 08:51 KenshinCui 阅读(70948) 评论(48) 推荐(102) 编辑
摘要:终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言、ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序。但是这里我想强调一下,前面的知识是你日后开发IOS的基础,没有那些知识你开发IOS会很痛苦,现在很多开发人员做开发都是一知半解,程序质量确实令人担忧,所以还是希望大家能够熟练掌握前面的内容,开发过程中多思考,彻底理解程序运行的原理、机制。好了言归正传,不管怎么样正式进入IOS开发还是令人兴奋的,今天的内容虽然说是开发预览,其实还是有大量内容要说的: 第一个iOS程序 iOS程序运行过程 文件结构 Storyboard 纯代码实现iOS开发 补充知识点 阅读全文
posted @ 2014-08-04 19:42 KenshinCui 阅读(91975) 评论(81) 推荐(167) 编辑
摘要:我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底是谁?它为什么又出现在Objective-C中间呢?今天我们将揭开这层面纱,重点分析在IOS开发中一个重要的框架Foundation,今天的主要内容有: Foundation概述 常用结构体 日期 字符串 数组 字典 装箱和拆箱 反射 拷贝 文件操作 阅读全文
posted @ 2014-08-01 19:04 KenshinCui 阅读(93056) 评论(60) 推荐(156) 编辑
摘要:由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby、Python的动态特性,例如动态类型、动态加载、动态绑定等。今天我们着重介绍ObjC中的键值编码(KVC)、键值监听(KVO)特性: 键值编码KVC 键值监听KVO 阅读全文
posted @ 2014-07-27 11:29 KenshinCui 阅读(61964) 评论(27) 推荐(42) 编辑
摘要:我们知道在程序运行过程中要创建大量的对象,和其他高级语言类似,在ObjC中对象时存储在堆中的,系统并不会自动释放堆中的内存(注意基本类型是由系统自己管理的,放在栈上)。如果一个对象创建并使用后没有得到及时释放那么就会占用大量内存。其他高级语言如C#、Java都是通过垃圾回收来(GC)解决这个问题的,但在OjbC中并没有类似的垃圾回收机制,因此它的内存管理就需要由开发人员手动维护。今天将着重介绍ObjC内存管理: 引用计数器 属性参数 自动释放池 阅读全文
posted @ 2014-07-26 17:10 KenshinCui 阅读(89300) 评论(35) 推荐(51) 编辑
摘要:ObjC的语法主要基于smalltalk进行设计的,除了提供常规的面向对象特性外,还增加了很多其他特性,这一节将重点介绍ObjC中一些常用的语法特性。当然这些内容虽然和其他高级语言命名不一样,但是我们都可以在其中找到他们的影子,在文章中我也会对比其他语言进行介绍,这一节的重点内容如下: 协议protocol 代码块block 分类category 阅读全文
posted @ 2014-07-26 09:52 KenshinCui 阅读(60701) 评论(16) 推荐(38) 编辑
摘要:前面已经简单介绍过ObjC的基础知识,让大家对ObjC有个大致的印象,今天将重点解释ObjC面向对象的特性。ObjC相对于C语言多了面向对象特性,但是ObjC又没有其他面向对象语言那么多语法特性,ObjC本身对面向对象进行了精简。当然这并不代表今天的内容就会少,今天的内容还是相当多的: 类定义 成员变量 方法和属性 self关键字 构造方法 description方法 继承 阅读全文
posted @ 2014-07-22 20:23 KenshinCui 阅读(64990) 评论(33) 推荐(58) 编辑
摘要:前面我们已经用了几章内容进行C语言介绍,当然要通过几篇文章完整的介绍C语言的知识是不太现实的,例如C语言的文件操作、内存申请等我们都没有重点介绍,当然核心知识点基本都已经提到了,后面有时间我们会继续扩充。今天我们正式开始学习Objective-C,以后简称“ObjC”,ObjC是在C语言的基础上加上了一层面向对象的特性,它完全兼容C语言,甚至可以混写C++。它是Mac OS X和IOS的主要开发语言,从IOS发布之后可以说ObjC的地位呈直线上升趋势,当前ObjC已经是仅次于C语言、Java的第三大编程语言。今天我们先简单的看一下C语言的一些基础内容: 第一个ObjC程序 基本数据类型 阅读全文
posted @ 2014-07-22 20:22 KenshinCui 阅读(39535) 评论(10) 推荐(22) 编辑
摘要:在第一节中我们就提到C语言的构造类型,分为:数组、结构体、枚举、共用体,当然前面数组的内容已经说了很多了,这一节将会重点说一下其他三种类型。 结构体 枚举 共用体 阅读全文
posted @ 2014-07-20 18:59 KenshinCui 阅读(25184) 评论(4) 推荐(13) 编辑
摘要:基本上每种语言都要讨论这个话题,C语言也不例外,因为只有你完全了解每个变量或函数存储方式、作用范围和销毁时间才可能正确的使用这门语言。今天将着重介绍C语言中变量作用范围、存储方式、生命周期、作用域和可访问性。 变量作用范围 存储方式 可访问性 阅读全文
posted @ 2014-07-18 20:37 KenshinCui 阅读(23886) 评论(6) 推荐(16) 编辑
摘要:大家都知道一个C程序的运行包括编译和链接两个阶段,其实在编译之前预处理器首先要进行预处理操作,将处理完产生的一个新的源文件进行编译。由于预处理指令是在编译之前就进行了,因此很多时候它要比在程序运行时进行操作效率高。在C语言中包括三类预处理指令,今天将一一介绍: 宏定义 条件编译 文件包含 阅读全文
posted @ 2014-07-18 20:36 KenshinCui 阅读(24330) 评论(8) 推荐(13) 编辑
摘要:指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移越来越模糊,感觉指针难以掌握,本文通过简单的例子试图将指针解释清楚,今天的重点有几个方面: 什么是指针 数组和指针 函数指针 阅读全文
posted @ 2014-07-16 13:08 KenshinCui 阅读(29665) 评论(16) 推荐(14) 编辑
摘要:数组在C语言中有着特殊的地位,它有很多特性,例如它的存储是连续的,数组的名称就是数组的地址等。而在C语言中是没有String类型的,那么如果要表示一个字符串,就必须使用字符串数组。 阅读全文
posted @ 2014-07-14 20:59 KenshinCui 阅读(31411) 评论(8) 推荐(18) 编辑
摘要:当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift 这么看下去还有大量的内容需要持续补充,但是今天我们从最基础的C语言开始,C语言部分我将分成几个章节去说,今天我们简单看一下C的一些基础知识,更高级的内容我将放到后面的文章中。 今天基础知识分为以下几点内容(注意:循环、条件语句在此不再赘述): Hello World 运行过程 数据类型 运算符 常用函数 阅读全文
posted @ 2014-07-12 18:40 KenshinCui 阅读(44674) 评论(19) 推荐(29) 编辑