为了能够将我们项目中的代码能够在后续开发者使用(重用代码),通常使用的方法是将代码按照功能模块编写成API。那么我们就很有必要了解Objective-C语言中常见的编程范式(paradigm),同时还需了解各种可能碰到的陷阱。

Read More

圆角是一种很常见的视图效果,相比于直角,它更加柔和优美,易于接受。设置圆角会带来一定的性能损耗,如何提高性能是一个需要重点讨论的话题。

大家常见的圆角代码x.layer.cornerRadius = xx; x.clipsToBounds = YES;这两行确实实现了圆角视觉效果。其实使用x.layer.cornerRadius = xx;已经实现了圆角,只不过在某些控件是不生效的,因为某些图层在被切割圆角图层之上而被显示出来了。而x.clipsToBounds = YES;带来的后果就是产生离屏渲染。可以使用instruments中的CoreAnimation工具,打开Color Offscren-Rednered Yellow选项,可见黄色区域部分即是离屏渲染部分。

那么离屏渲染会带来什么?当然后资源损耗,可能产生卡顿。因为在iPhone设备的硬件资源有差异,当离屏渲染不多时,并不是很明显感觉到它的缺点。

Read More

Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。

对于Objective-C来说,这个运行时系统就像一个操作系统一样:它让所有的工作可以正常的运行。Runtime基本上是用C和汇编写的,这个库使得C语言有了面向对象的能力。

在Runtime中,对象可以用C语言中的结构体表示,而方法可以用C函数来实现,另外再加上了一些额外的特性。这些结构体和函数被runtime函数封装后,让Objective-C的面向对象编程变为可能。

找出方法的最终执行代码:当程序执行[object doSomething]时,会向消息接收者(object)发送一条消息(doSomething),runtime会根据消息接收者是否能响应该消息而做出不同的反应。

Read More

作为iOS开发,作品App肯定需要提交到App Store审核。平心而论,App Store确实成功地将许多恶意软件拒之门外。但是,对开发者而言,应用程序的审核流程是令人沮丧的黑箱操作。

当然,什么是恶意程序是由Apple来定义。因为App Store的存在,所以,如果想要实现某些特定的功能,唯一的手段就是将设备越狱或者骗过App Store的审查。

官方的App审查永远无法抓到那些钻空子的恶意程序,所以需要另外一套高效的机制,来阻止恶意程序破坏整个操作系统的安全。

Read More

iOS应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的。iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序会受到系统的很多限制,这样可以提高电池的使用和用户体验。

本文所要说到的生命周期,也不仅仅只是应用生命周期;还包括,视图生命周期。

Read More

编写软件时,经常需要获取一个对象集合,并通过某些已经条件计算该集合的值。你需要保留符合某个条件的对象,删除那些不满足条件的对象,从而提供一些有意义的对象。

在使用软件iPhoto的过程中,经常会看到这种现象,如果通知iPhoto仅显示等级为三星级或三星级以上的图片,则指定的条件为“照片的等级必须为三星级或三星级以上”。这样,所有照片都需要经过该过滤器过滤。满足条件的对象通过了过滤器,而其他对象被筛除了。最后,iPhoto将显示出所有高质量的图片。

Cocoa提供了一个名为NSPredicate的类,它用于指定过滤器的条件。可以创建NSPredicate对象,通过该对象准确地描述所需的条件,对每个对象通过谓词进行筛选,判断它们是否与条件相匹配。这里的“谓词”通常用在数学和计算机科学概念中,表示计算真值或假值的函数。

Read More

随着iOS开发的流行,针对iOS开发涉及的方方面面,早有一些公司提供了专门的解决方案或工具。这些解决方案或工具包括:用户行为统计工具(友盟,Flurry,Google Analytics等), App Store销售分析工具(例如App annie), App crash收集工具(例如Crashlytics),App测试发布工具(Test Flight), App Push服务等。

这些解决方案或工具节省了iOS开发者大量的开发时间,但是由于相关介绍文章的缺乏,许多开发者都在重复着自己一次又一次重新造轮子。所以将自己使用的相关的第三方服务使用经验,整理成一系列文章,以便广大开发者能够省去大量的重复性工作。

Read More

看到Effective这个词,大家一定会想到《Effective C++》、《Effective Java》等业界名著,那些书里汇聚了多项实用技巧,又系统而深入的讲解了各种编程知识。那么,《Effective Objective-C 2.0》也是如此。

作为Mac OS X与iOS应用程序的开发语言,Objective-C作为首选。那么,它有哪些需要注意的呢?

Read More

最近因为博主自己的需求,而App Store上的App不能满足需求,或者是说,想借此机会涉猎一下Mac OS的开发。之前一直臆想iOS开发和Mac OS差不多,实则不然。

BTW 推荐一款非Apple官方的App Store,HackStore是一款来自俄罗斯的Mac应用商店,我们可以将自己开发完的App免费发布上去,也是具有审核机制的,博主目前推广自己的ImageHosting,一款图床软件,目前支持七牛云存储。有需求欢迎大家使用,吐槽。 ImageHosting for Mac

现在,分享一下,当我们完成Mac开发,release一个.app文件之后,我们应该如何打包成一个dmg文件的方法。

Read More

在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器)。另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。

Read More
Author's picture

Chars

Currently engaged in iOS development, learning Unity, like to study all kinds of novelty


iOS developer @ZAKER


Guangzhou, China