现在的位置: 首页 > 综合 > 正文

Objective-C的认识

2013年12月10日 ⁄ 综合 ⁄ 共 1428字 ⁄ 字号 评论关闭

Objective-C是一种面向对象编程的语言,OC跟C++一样,都是对C的扩展,OC只允许单根继承(根是NSObject),C++则允许多根继承。


面向对象编程(Object-Oriented Programming)简称OOP,OOP的思想很重要。

Objective-C的名称就是这样而来。

Objective-C 中有几种数据类型和 C 不太一样。特此记录。

  • -  id
    是一个指针类型,可以指向任何类型的对象


  • -  BOOL
    char
    是一样的,但是做为布尔值使用。


    YES
    表示1


    NO
    表示 0


  • -  IBOutlet
    是个没有任何意义的宏,可以忽略。当 Interface Builder 从.h 文件中读取类


    定义时,这个宏会对其做出一个提示。


    -
    IBAction
    void 是一样的,同样仅用作对 Interface Builder 的提示。


    -
    nil
    NULL 是一样的,我们使用
    nil 而不用
    NULL 是因为我们用来表示对象的指针为空。 

    (以下摘自网络)

Objective-C是什么?

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

OC

 C语言是一门面向过程的语言,OC是在C语言的基础上,增加了一层最小的面向对象语法,为什么说是最小的面向对象语法呢?因为OC把一些比较复杂的面向对象语法都去掉了,剩下的都是面向对象的精华,因此OC是一门面向对象的语言,而且会比C++简单很多。因为OC是基于C语言的,所以完全兼容C语言,也就是说我们在开发iOS程序过程中,可以在OC代码中混入C语言代码,甚至是C++代码。

先简单列出一点差别:

 

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

 

1 减号(或者加号)

 

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

 

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

private void hello(bool ishello)

{

//OOXX

}

 

用Objective-C写出来就是

-(void) hello:(BOOL)ishello

{

//OOXX

}

挺好懂的吧?

 

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

 

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

学过java的人可以这样理解:(减号) - 实例方法    +(动态方法)

 

2 中括号

 

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

 

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

 

this.hello(true);

 

在Objective-C里,就要写成:

 

[self hello:YES];

 

3 NS****

 

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

 在Java中,为了防止两个类名相同的类冲突,你可以将这2个类放在不同的包里面。OC中并没有"包"的概念,也就是没有命名空间机制,取而代之的是开发人员给类名加上前缀,使用前缀可以有效的防止类名冲突。比如NSString(OC中的字符串类)、NSArray(OC的数组类),它们的前缀都是NS


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

而现在则是Cocoa.


语法要点:

抱歉!评论已关闭.