Objective-C 入门笔记

简介: 简介 建立在C语言之上,可以混编C/C++代码,编写一个类需要二个文件: .h的头文件 .m的实现文件(如果是C/C++混编文件,文件后缀为.mm) 既然有头文件,所以很多人会拿它与C++进行类比,它最重要的三个特性是:Message、Category、Protocol,与C++类比,二者之...

简介

建立在C语言之上,可以混编C/C++代码,编写一个类需要二个文件:

.h的头文件

.m的实现文件(如果是C/C++混编文件,文件后缀为.mm)

既然有头文件,所以很多人会拿它与C++进行类比,它最重要的三个特性是:Message、Category、Protocol,与C++类比,二者之间的不同:

1、它没有new也没有delete,但有类似的方法alloc、dealloc;

2、不支持多继承,只支持单继承,但是提供了Protocol;

3、它没有命名空间;

4、不支持内联函数;

5、不支持参数默认值;

C++太过庞大,所以拿二者比较其实不是特别合适,跟Java相比,我觉得可能更适合一些吧

 

快速入门

1) 类的定义

.h头文件

@interface Hello : NSObject  
 
@end
.m实现文件
#include "Hello.h"
@implementationFraction
 
@end

 
通常我们定义一个类,都会让它继承自NSObject。有人会问NSObject后面的{}怎么省略了,因为我没有定义“实现变量”所以就把它省略了。
 
因为OC不提供命名空间,所以类命名上要特别注意了,不然很容易覆盖/冲突而导致很多未知的问题。苹果定义的类,一般类名最前面有二个字母,比如NSObject中的NS,UIKit中的UI,所以为了避免跟苹果定义的类产生冲突,自定义的类以三个字母开头,比如BNR这样
 
 
2) 方法的定义和调用
img_e58bd5949ee4b8912bcbcf2eb4ea0eb8.jpg
 
方法分二种:实例方法、类方法,如上图所示,区别类方法和实例方法,主要是它的声明符:-、+
+ (返回值类型) 类方法名
- (返回值类型) 实例方法名,需要先创建后再使用,比如这样:[[[Hello alloc] init] methodName];
 
无论是哪种方法,调用都是使用中括号“[]”,方法的准确来讲应该称为发消息,它有三个要素:
receiver(消息接收方)
selector(选择器,通常指方法名)
arguments(实参)
 
通常类中调用自身的方法,用[self xx],self是一个隐式的局部变量,不需要声明self,程序自动会为self赋值,把它当作JavaScript中的this就好理解了。
 
OC中默认所有的方法都是公开的,所以如果你想定义一个私有方法,不需要在.h中声明方法,直接在.m中定义方法就好,但是建议使用p_开头,这样避免与苹果中定义的一些私有方法名产生冲突。
 
 
3) 基本数据类型
 
OC建立在C语言之上,所以C中的所有基本数据类型它都支持,比如:int、float、char…
OC自身定义的数据类型,都包含在Foundation中了,类名以NS开头,比如:NSArray、NSInteger、NSNumber,定义:NSString *myStr;
 
 
更多关于Objective-C的学习资料,推荐 Ry’s Objective-C Tutorial 
目录
相关文章
|
Java iOS开发
【IOS 开发】Objective - C 入门 之 数据类型详解(二)
【IOS 开发】Objective - C 入门 之 数据类型详解(二)
238 0
|
C语言 iOS开发
【IOS 开发】Objective - C 入门 之 数据类型详解(一)
【IOS 开发】Objective - C 入门 之 数据类型详解(一)
172 0
|
C语言 C++ iOS开发
Objective-C入门
  Objective-C是一种简单的计算机语言,设计为可以支持真正的面向对象编程。Objective-C通过提供类定义,方法以及属性的语法,还有其他可以提高类的动态扩展能力的结构等,扩展了标准的ANSI C语言。
1131 0
|
存储 iOS开发 索引
|
API iOS开发 Swift
【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记9 Objective-c Compatibility
我们都知道在Swift诞生之前进行IOS开发一直使用Objective-c这门语言。OC和Swift之间需要一个桥接。
846 0
|
iOS开发 索引 编译器
【《Objective-C基础教程 》笔记】(七)OC的关键字用意小结
1.  #import     #import 从system目录中查找头文件,不会检查当前目录。     #import "" 首先在当前目录中查找,如果未找到,则在Xcode设置的预处理程序搜索路径中查找文件。
746 0
|
存储 iOS开发
【《Objective-C基础教程 》笔记】(八)OC的基本事实和OC杂七杂八的疑问
一、疑问 1、成员变量、实例变量、局部变量的区别和联系,在访问、继承上如何表现。 2、属性@property 和 {变量列表} 是否相同,有什么不同。 3、类方法、类成员、类属性;实例方法、实例变量、实例属性。
887 0
|
iOS开发
【《Objective-C基础教程 》笔记ch05】(六)OC中的复合机制Composition
 1、复合通过包含作为实例变量的的对象指针实现的。        @interface Unicycle : NSObject        {           Pedal*pedal;           Tire*tire;         }//Pedal和tire通过复合的方式组成了Unicycle 2、存取方法——用来读取或者改变某个对象属性的方法。
1002 0