Objective-C语法快速参考

大部分有一点其他平台开发基础的初学者看到XCode,第一感想是磨拳擦掌,看到Interface Builder之后,第一感想是跃跃欲试,而看到Objective-C的语法,第一感想就变成就望而却步了。好吧,我是在说我自己。

如果你和我一样,对苹果相关的开发:Mac OS X或是iPhone有兴趣,但是第一时间看到Objective-C就会头疼并伴有发烧症状的话,疗效比较好的快速治疗方法是阅读本文。大概花二十分钟左右,而且绝不无聊的时间,你就会对Objective-C有那么一点点了解,至少读读例子不会那么头疼了。

不过假定你要有那么一点点c++、c#或是java的基础,至少能看到c++、c#或是java的源码,能够大致明白说得是什么。

这篇文章不是一篇科技文章,希望你也不要把它当做科技文章来读。文章非常不严谨,但是我相信你能看得懂。

一、XCode、Objective-C、Cocoa说的是几样东西?

答案:三样东西。

XCode:你可以把它看成是一个开发环境,就好像Visual Studio或者Netbeans或者SharpDevelop一样的玩意。你可以将Interface Builder认为是Visual Studio中用来画界面的那部分功能单独提出来的程序。

Objective-C:这是一种语言,就好像c++是一种语言,Java是一种语言,c#是一种语言,莺歌历史也是一种语言一样。

Cocoa:是一大堆函数库,就好像MFC.NETSwing这类玩意,人家已经写好了一堆现成的东西,你只要知道怎么用就可以了。

有些人会比较容易混淆Objective-CCocoa,就好像有些人会混淆c#.NET一样。这两个东西真的是两个不一样的东西。

二、Objective-C是什么?

你可以把它认为是语法稍稍有点不一样的c语言。虽然第一眼望上去你可能会认为它是火星语,和你所认知的任何一种语言都不一样。

先简单列出一点差别:

 

问题一:我在程序中看到大量的减号、中括号和NS****这种东西,他们是什么玩意儿?

1 减号(或者加号)

减号表示一个函数、或者方法、或者消息的开始,怎么说都行。

比如c#中,一个方法的写法可能是:

private void hello(bool ishello)

{

//OOXX

}

用Objective-C写出来就是

-(void) hello:(BOOL)ishello

{

//OOXX

}

挺好懂的吧?

不过在Objective-C里面没有publicprivate的概念,你可以认为全是public

而用加号的意思就是其他函数可以直接调用这个类中的这个函数,而不用创建这个类的实例。

2 中括号

中括号可以认为是如何调用你刚才写的这个方法,通常在Objective-C里说“消息”。

比如C#里你可以这么写:

this.hello(true);

在Objective-C里,就要写成:

[self hello:YES];

3 NS****

老乔当年被人挤兑出苹果,自立门户的时候做了个公司叫做NextStep,里面这一整套开发包很是让一些科学家们喜欢,而现在Mac OS用的就是NextStep这一套函数库。

这些开发NextStep的人们比较自恋地把函数库里面所有的类都用NextStep的缩写打头命名,也就是NS****了。比较常见的比如:

继续阅读“Objective-C语法快速参考”

最近的新鲜事

1.北京市4000用户“尝鲜”4G

北京移动上月开始招募的体验用户,近日开始“尝鲜”更为快捷的4G网络。陆续有4000多名本市体验用户拿到申请的4G终端,开始为期6个月的测试体验。首批“尝鲜”的体验者市民古先生拿到手的是一个iPhone 5一半大小的白色设备,这个白色小机器就是可以将4G网络信号转换成手机、iPad、记本电脑都通用的WiFi信号的MiFi。MiFi俗称“上网伴侣”,它的功能是将4G网络信号转换成手机、iPad、笔记本电脑等移动终端通用的无线信号。

PS:不知道效果如何,另外cnbeta的喷子真多……3M/s比10Mbps的网速要快好不好,我们常说的10M宽带是小b,要除以8的……

2.三星Galaxy Note III屏幕组件曝光 边框厚度仅2.2mm

三星已经证实了Galaxy Note III将在9月4号的发布会上露面的消息,但今天泄露的一组照片,已经提前暴露了该机的屏幕组件。文中照片均为eTrade Supply所摄,其声称这些图像绝对可信。但在把所有画面都整合到一起之前,我们仍需要对此持审慎的态度。如果消息属实,那么Galaxy Note III的屏幕尺寸就是5.68英寸、边框厚度2.2毫米、屏幕厚度更是只有1.8mm。

PS:期待9月份上旬几家公司都要发布新产品了,智能手表什么的很有意思。iPhone的无边框概念要被三星实现了么……如果iPhone还继续这样出,估计没人买了吧。

3.围观几天的Bo案和Li案

Bo案就像是在好玩一样,打太极么。不过真是一个家庭的悲剧,看到早年的一些家庭合影。真是于己是一个小家的破裂,于人是社会的悲剧啊。

Li案就更闹不明白了,老Li也被气得生病无法出庭。网络围观确实是一件很可怕的事情。

iOS5开发学习笔记(3)

经过一段时间的学习,基本掌握了简单的iPhone开发。

主要学习的控件有:

Tab Bar Controller, 类似app store应用里面,下面的tab切换按钮。可以修改图片,名称等属性。

Navigation Controller,常见的如通讯录的那个可以左右移动的控件,可以设置标题等属性。

Table View Controller,常用的以列表形式展示数据的控件,使用时需要指定数据源。

WebView,可以用来显示网页,本地html页面或html代码。

Button,Label,TextField,这个就不解释了。

DatePicker控件,可以选取时间和日期。

最后是基本的View空间,可以自定义各种控件的组合或者是作图等。

 

Notes:

1. Navigation Controller和Tab Bar Controller可以通过Editor->Embed In来直接加上

2.Controller和Controller以及View的控制流转,可以通过storyboard界面的control+拖动来直接连接

3.segue是新加入的特性,如2中描述的,可以更好,更简单地控制界面的流转

4.手势操作暂时是从代码给controller和view添加的,从storyboard来看,也可以直接从objects里面拖进去。

5.常用的手势(放大/缩小,旋转,移动)已经给定义好了,不需要自己获取手势操作的raw data。

6.作图的时候需要使用到context和一些C Struct定义的CGPoint等。

 

代码可以参见:https://github.com/yiguid/iHome

基本代码学习都是参照的公开课视频,老头讲课的内容,自己有一些发挥和修改。

iOS5开发学习笔记(1)

有时间又来继续学习iOS开发了,这下iOS6的beta出来之后,xcode也都升级到4.2了,使用的是iOS5的SDK。

和之前相比,比较明显的变化是增加了storyboard和更好的内存管理机制。storyboard让我们可以对界面的构建有更好的体验,将不同的view组织得更加可视化。内存管理机制的完善,在写代码的时候就不需要手动管理内存,计数,release,autorelease,dealloc什么的了,都会帮你自动完成,这是一个很好的地方。而且他也不同于java的内存回收机制(随机检测是否有未再使用的内存),自动引用计数完成之后马上销毁。

网上关于iOS5开发的教程很少,资料和书也比较少,特别是对新特性的介绍(storyboard和优化后的内存管理机制)。网易公开课中有一个比较新的公开课程,叫《斯坦福大学公开课:iPad和iPhone应用开发(iOS5)》的是比较不错的一个视频课程,我刚看到了第三课。

到目前为止,学到的东西主要是基础的一些介绍,框架的简要说明。 第二课中教授演示了大概1个小时的如何创建一个简单的逆波兰计算器。第三课主要是讲一些Object-C语言特性和Foundation Framework。

开始学iOS开发,首先看了一下《Objective-C基础教程》,这是一本对这个新的,比较诡异的语言的入门好书

之后当然是构建开发环境,包括xcode的安装,破解,iPhone的越狱,然后这样我们就可以在不加入开发者计划的情况下进行真机调试了。具体的方法网上有很多就不粘过来了。

发现上面说了很多,还没有提到笔记的事情……

==================================================================

1.增加了weak和strong,是比较重要的东西

2.两种@标签property和synthesize的组合使用

3.no more : release,autorelease,dealloc

4.storyboard的使用学习,拖拽生成代码

5.学习了view和tableview的使用

6.延迟初始化的方法

7.结合sqlite3的使用 — 编写了一个简易的待办事项工具

8.多个按钮可以采用同一action,需要更改id类型来指定sender类型 — 编写了一个简易的计算器

9.NSString, NSNumber,NSLog等的基础使用。

 

网上资料比较少,欢迎大家来一起讨论~

iPhone: There is no SDK with the name or path iphoneos XXX

今天开始继续学习iOS开发~

环境: MAC OS 10.6

编译《iPhone 应用程序开发名家解析》的源码报错

(源码下载:www.deitel.com/books/iphonefp

先注册,点 Register,填写相关信息,到邮箱里确认注册

登录,到www.deitel.com/books/iphonefp

下载页面左侧的Download Code Examples

iPhone: There is no SDK with the name or path iphoneos XXX

老的iPhone 项目,使用最新的 XCode 3.2进行编译,报错:

iPhone: There is no SDK with the name or path iphoneos XXX

解决办法:

在XCode的工具条里面选择 Project- Edit Project Setting –

在 General 里面 Project Format 选择 XCode 3.2,

在Build里面 Base SDK选择 iPhone Simulator 3.0

然后再重新编译即可。