IOS开发基础Object-C(01)— OC概述及比较

一、OC概述

1、OC是一种通用的面向对象的编程语言,它扩展了ANSI C编程语言,将SmallTalk式的消息传递机制加入到ANSI C中。它是苹果的OS X(X表示第十代)和IOS操作系统,及其相关的API、Cocoa和Cocoa Touch的主要编程语言。
2、OC主要做UI界面,C语言、C++ 可用于图形处理。
3、OC基于C语言,在C语言的基础上增加了一层最小面对对象语法,可以完全兼容C语言。也就是说,可以在OC开发中混入C语言代码和C++语法。

二、语言预览

1、没有包名(命名空间)的概念

没有命名空间的概念,取而代之的是开发人员给类名加上前缀,来防止雷鸣冲突。比如,NSstring(OC中的字符串)、NSArray(OC中的数组,相当于Java中的list),前缀都是NS。
2、OC中的关键字和字符串都是以@开头。

(1)因为在OC 中可以混入C语法,C++语法,所以为了和其他语法关键字加以区分,OC的关键字都以@开头,例如:
@interface
声明类
@implementation
实现类
@protocol
声明协议
@optional
与@protocol配合使用,说明协议中的某个或者某几个方法可以不实现
@required
与@protocol配合使用,说明协议中的某个方法或者某几个方法必须实现
@end
与@interface ,@implementation,@protocol配合使用,代表声明或者实现结束
@encode
@encode为编译器宏,它可以将类型转换为相应的字符串。
这些具体怎么用,我们先不用追究,等以后我会详细的跟大家来讲。
(2)OC中的字符串也是以@开头,比如:@”Hello World!”,其中Hello World!就是我们需要的字符串。

NSLog(@"Hello World!");

三、语言比较

1、函数对比
我们先简单写一个Student方法

Java语言

public void Student (int age) {  

}  

C++语言

void Student(int age) {  
}  

OC语言

-(void) Student:(int)age{ } 

2.消息传递

Objective-C使用消息传递(本质是字符串),因此方法、类和对象可以在运行时确定和修改。Java的方法是与class静态绑定的,虽然可以在运行时用反射的机制获取,但效率会下降1个数量级,只在极端的情况下使用。也就是说,前者更加动态。

//在OC语言中,消息传递
[object  message:param1 withParameter:param2]  
NSString *string;    
string = [[NSString alloc] initWithString:@"Hello"]; 

3、垃圾回收

在内存管理方面Java是垃圾回收,而Objective-C是引用计数。前者发生在运行时,后者在编译期。2011的WWDC中Apple展示了最新的ARC(Automatic Reference Counting),极大减轻了程序员管理内存的负担,但其本质依然是编译期的基于引用计数的内存管理。
补充:虽然OC也可以用垃圾回收,不过使用的人很少,这也是后来ARC出现的原因吧。

4、self及this
在OC中的self 相当于Java中的this

[self method]

类似于:c++/java

this.method();

5、继承关系和接口实现

OC语言中

Student:People
ClassA:ParentA<Protocol>  
ClassA <Protocol>  

Java语言中

Student extends People
ClassA extends ParentA implements interface ClassA implements interface 

6、空指针

id obj = nil;
NSString *hello = nil;//nil相当与Java中的null

你可能感兴趣的:(ios,this,垃圾回收,ios开发,self)