高质量图形是一个良好设计过的app的重要组成部分。高质量图形是OS X和其他操作系统的区别之一。当某些操作系统还在使用flat colors和矩形对象的时候,OS X已经使用color、透明、等高级的组合系统compositing system来让app有更顺滑和友好的外观了。

Drawing是大部分cocoa app的基本组件。如果你的app只使用基本系统空间,那么cocoa 做了所有绘制的工作。如果你使用custom views或者controls,你来负责使用drawing commands实现显示。

Cocoa drawing环境可用于构建在Application Kit框架(AppKit.framework)之上的所有应用程序。该框架定义了大量用于绘制从原始形状到复杂图像和文本的所有类和函数。Cocoa Cocoa drawing也依赖于Foundation框架中找到的一些原始数据类型(Foundation.framework)。

点我阅读全文...

ViewController顾名思义,用于控制内部的所有VIew。view controller 有几种类型,比如容器式:split view controller 多用于ipad,container view controller,navigation view controller等。这些容器式的,大部分都没有常见VC的功能逻辑,通过包含一个或者多个childviewcontroller 来实现。

点我阅读全文...

在iOS中,使用窗口window和视图view来表达屏幕上的内容。windows只给app的视图们提供一个基本的容器container,自身并没有任何可见的内容。视图定义了你想在window里填充的部分内容。

任何程序都有至少一个窗口和一个表达内容的视图。UIKit或者其他系统提供预先定义好的视图view,你可以用这些view表达内容。这些视图包含按钮,label,更复杂一些的油table,collectionview,picker等。如果这些预定义的视图不满足你的要求,你可以自己定义custom驶入,自己管理绘制drawing和事件处理。

在iOS中,一个视图是一个UIview的实例。管理了app window的一个矩形区域。驶入的职责是绘制内容,处理多种点击事件和管理view的字视图subviews的布局layout。绘制drawing这个操作调用了很多图形技术,例如core graphics,openGL ES。drawing也使用uikit在view的矩形区域内来绘制图形,图片和文字。一个view负责响应矩形区域内的点击事件(通过使用手势识别或者直接处理点击事件)。在视图的层级中,parentview负责处理字视图的大小和位置,这个操作可以动态完成的。这种操作子视图的能力能够让view很好的适配一些变化的情况,比如设备终端的物理旋转和动画等。

可以把view当成构建用户界面的block。常见做法是使用不同的view创建层级关系,而不是在一个视图里表示所有内容。处于层级关系里的view只表达界面的部分内容(view负责自己最擅长,最优化的内容),比如,UIkit有专门用于显示文字,图片等内容的view。

点我阅读全文...

应用程序内存管理是在您的程序运行时分配内存,使用它并在完成时释放内存的过程。一个写得很好的程序尽可能少地使用内存。在Objective-C中,它也可以被看作是将有限内存资源的所有权分配给许多数据和代码段的一种方式。

OC提供两种内存管理方式:手动管理内存MRR(manual retain-release),自动自动引用计数ARC。ARC使用和MRR一样的引用计数方法,在编译器加入管理内存的方法。

点我阅读全文...

键值观察提供了一种机制,允许对象在其他对象的特定属性值修改是收到通知。 这对于应用程序中的model层和controller层之间的通信特别有用。 (在OS X中,controller层绑定技术在很大程度上依赖于键值观察。)controller对象通常会观察model对象的属性,View对象通过controller观察Model对象的属性。 另外,Model对象可以观察其他Model对象(通常用于确定依赖值何时发生变化),甚至可以观察其本身(再次确定依赖值何时发生变化)。
您可以观察属性,包括简单属性,一对一关系和多对多关系。 多对多关系的观察者会被告知所做更改的类型以及参与更改的对象。

点我阅读全文...

许多人将性能等同于速度。事实上,如果一个程序能在一秒钟内完成一项复杂的操作,你可能会认为该程序性能良好。可是,这里这个速度可能是一种误导性的测量。在复杂的软件系统中,操作速度不是固定值。如果您在不同条件下多次执行相同的操作,则完成该操作所需的时间可能差异很大。这是因为程序只是在本地系统上共享资源的许多进程之一,并且这些资源的使用(或滥用)会影响所有其他进程。

点我阅读全文...

并行编程旨在解决如何更高效的使用多核处理器来处理一个程序内的多个并发任务问题。(用户界面,后台任务)现代的并行编程技术,在OSX和iOS平台上主要使用的是GCD(大型中央调度),这个技术比传统的thread管理好的地方是,它是基于操作系统级别的,剥离了应用程序,节约了线程的调用堆栈。其次对于不同平台,GCD可以统一管理,类似某种线程池的技术,对于不同的系统,和系统的运行状态,自动处理thread的各种问题。Operation Objects是基于GCD封装的Objective-C对象。

点我阅读全文...

what is? 一个循环:线程进入并且用于于执行事件处理,目的为了响应某些incoming 事件。你的代码负责提供状态控制,用于实现runloop的实际循环部份(loop 循环体)。换句话说,你的代码提供的 while/for 循环驱动了run loop,在你的循环内,你是用一个runloop对象去“执行”事件——处理接受很多事件和安装事件处理方法的代码。

点我阅读全文...

2014年,成功戒烟1年半,健身半年,看了珠穆朗玛;书读得太少,业务还算精进;「星际穿越」是年度最佳电影;「Endless river」是年度最佳专辑;肾六是最差手机。优胜美地是最差系统。 2015年我要好好维护一下我的两个收费app,是的他们都快生锈了,所以也就没什么人买了(啊,话说去年我也是这么想的);我还要写一个自己的twitter客户端;要继续健身,戒烟,少喝点酒,让身体变得更好看,重点是好用。要多读书。要多用英语喷那些不爽的人和事。 1月托公司的福,先去普吉度个假;6月希望能办个日本签证,想去看日本的音乐节。 完了。

点我阅读全文...

这个社会啊,戾气太足什么的也不用我说了。说点别的,骑个318,自己不想去或者耸比骑不动,然后就开始意淫啊:这不挺简单的吗,有时间哥就能去。所以去过的人都是装B犯,你看他们堵的哈哈哈。同样的还有爬珠峰,今天又看到一个SB言论:花钱就可以登,专业队员的目标是K2。珠穆朗玛并没有那么神奇。 你看看,这种言论很容易把自己搞成 “老子不差钱但老子没兴趣就是不去气死你” 状;或者“老子正奋斗呢,没那时间玩你们那些逃避社会的破事” 状。无论哪两种形状,其实在真去过的人面前都挺露怯的。You can,You up啊。 同样的还有现在屌丝们非常喜欢的两个词“绿茶X”,”驴X”。话说,现在这物欲横流的社会,吃不到葡萄就要说葡萄是婊了吗?人对自己的身体有100%的支配权懂吗,和所有驴友睡了就是不和你睡,怎么着,有意见吗?

点我阅读全文...

1,使用Extension,编译器会期望在此扩展的主”.m”文件下实现方法或属性。Category相当于扩展分离了当前的 @implement ,使他们在不同的文件实现。2,Category不支持属性@property。3,Category一般用于扩展不属于自己创建的类的方法,也可以用于 当前类的私有方法。Extension广泛用于创建私有属性和方法。

点我阅读全文...