iBeacon开发

Beacon

什么是iBeacon

iBeacon是苹果在2013年WWDC上推出一项基于蓝牙4.0(Bluetooth LE | BLE | Bluetooth Smart)的精准微定位技术,当你的手持设备靠近一个Beacon基站时,设备就能够感应到Beacon信号,范围可以从几毫米到50米。iBeacon相比较于原来的蓝牙技术有几个特点:

查看更多

马上着手开发Mac应用程序

Road Map

你是否想要开发 Mac 应用程序却又不知道从哪里入手?本路线图提供了 Mac 应用程序开发的绝佳起点,即使你已经是一个 iOS 开发专家,本路线图对你依然适用。Apple让开发应用程序和提交应用程序到 Mac App Store 变得简单。遵循本路线图以了解如何取得开发工具,理解主要概念及最佳实践,并学会查找更多信息。

查看更多

Text Kit进阶

Text Rendering Architecture

在上一篇文章Text Kit入门中我们主要了解了什么是Text Kit及它的一些架构和基本特性,这篇文章中会涉及关于Text Kit的更多具体应用。

Text Kit是建立在Core Text框架上的,我们知道CoreText.framework是一个庞大而复杂的框架,而Text Kit在继承了Core Text强大功能的同时给开发者提供了比较友好的面向对象的API。

本文主要介绍Text Kit下面四个特性:

  • 动态字体(Dynamic type)
  • 凸版印刷体效果(Letterpress effects)
  • 路径排除(Exclusion paths)
  • 动态文本格式化和存储(Dynamic text formatting and storage)

查看更多

Text Kit入门

更详细的内容可以参考官方文档 《Text Programming Guide for iOS》

“Text Kit指的是UIKit框架中用于提供高质量排版服务的一些类和协议,它让程序能够存储,排版和显示文本信息,并支持排版所需要的所有特性,包括字距调整、连写、换行和对齐等。”

以前,如果我们想实现复杂的文本排版,例如在textView中显示不同样式的文本,或者图片和文字混排,你可能就需要借助于UIWebView或者深入研究一下Core Text。在iOS6中,UILabelUITextFieldUITextView增加了一个NSAttributedString属性,可以稍微解决一些排版问题,但是支持的力度还不够。现在Text Kit完全改变了这种现状。

Text Kit

查看更多

Xcode预置Sinppets知多少

前言

NSHipster本周的主题是《Xcode Snippets》,并将他们常用的Snippets放在了GitHub,又引来很多粉丝疯狂的Star,我也过去观望了一下,其实内容不多,而且也没有什么太多的亮点,我觉得只要你平时注意积累和整理自己的Snippets,效果一定比从别人那里Fork来用要好得多。什么?你还不知道Snippets是什么?那你弄清楚了再来看!

其实我平时也不太注意Sinppets的积累和整理,所以决定从现在起开始。在积累自己的Sinppets前,我先大致看了一下Xcode预置的Sinppets,发现不少我曾经千百次敲的代码Sinppets里面都有,所以觉得有比较写成文章记录一下。

Sinppets

现在就按顺序将Xcode预置的Sinppets过一遍。

查看更多

Objective-C异步编程

好吧,我承认我标题党了,因为最近在看《JavaScript异步编程》,所以也想写点关于异步编程在Objective-C中的应用和实践中的一些原则。

1. 不要阻塞主线程

不管在进行iOS还是OS X开发中,主线程都只应该处理用户交互和界面布局,好的程序通常能够随时快速响应用户的操作,所以CPU密集型或者会阻塞线程的代码应该在其他位置去执行,我指的是其他线程。

查看更多

Web Notification

在OS X 10.8 Mountain Lion系统上,通过Safari访问的页面能够发送通知到系统右边栏通知中心,通知(Notification)是通过WebKit Notification 对象发出的,这也是W3C标准实现的一部分。

Notification Center

来自Safari的通知可以在系统偏好设置的“通知”面板内进行设置,有些用户可能希望Safari的通知以提示框(alert)的形式在屏幕上停留一会儿然后再消失,有些人可能就不想在屏幕上显示。另外,用户可以在Safari偏好设置的通知面板内对单个网站(域名)的消息进行设定(Allow or Deny)。

查看更多

Effective Objective-C [下]

Chapter 6: Blocks and Grand Central Dispatch

Item 37: Understand Blocks

《Ry’s Objective-C Tutorial》# Blocks

Item 38: Create typedefs for Common Block Types

当我们程序中要使用一些具有共性的Block时(返回值类型、参数个数和类型相同),我们可以给这种Block定义一个类型:

1
2
3
4
5
typedef NSComparisonResult (^NSComparator)(id obj1, id obj2);
//...
- (NSArray *)sortedArrayUsingComparator:(NSComparator)cmptr;
- (void)sortUsingComparator:(NSComparator)cmptr;
//...

查看更多

Effective Objective-C [上]

本文是针对《Effective Objective-C》一书的代码解读,笔者并没有看过原书,只是通过阅读该书的代码,并结合相应的主题,来臆测作者可能要表达的内容并用自己的语言来描述出来。

Chapter 1: Accustoming Yourself to Objective-C

Item 1: Familiarize Yourself with Objective-C’s Roots

Item 2: Minimize Importing Headers in Headers

减少头文件中引入(#import)文件的数量,大部分情况下我们应该在头文件中用@class申明要引用的类,在实现文件中涉及到对该类的操作时才#import

查看更多