系列:iOS开发-OC基础介绍

系列:iOS开发-OC基础介绍

Objective-C,通常写作ObjC或OC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。
GCC与Clang含Objective-C的编译器,Objective-C可以在GCC以及Clang运作的系统上编译。
当然这些内容,一样的都是百科中的基础介绍.
1980年代初布莱德·考克斯(Brad Cox)在其公司Stepstone发明Objective-C,简单的算一算,一个OC的语言也有了进40年了…瞬间被吓坏了,iOS开发真正火的还没有多少年吧,当然macOS开发也是用它就是了…

进入正题
Objective-C是C语言的严格超集--任何C语言程序不经修改就可以直接通过Objective-C编译器,在Objective-C中使用C语言代码也是完全合法的。Objective-C被描述为盖在C语言上的薄薄一层,因为Objective-C的原意就是在C语言主体上加入面向对象的特性。
Objective-C代码的文件扩展名

.h 头文件。头文件包含类,类型,函数和常数的声明
.m 源代码文件。这是典型的源代码文件扩展名,可以包含 Objective-C 和 C 代码。
.mm 源代码文件。带有这种扩展名的源代码文件,除了可以包含Objective-C和C代码以外还可以包含C++代码。仅在你的Objective-C代码中确实需要使用C++类或者特性的时候才用这种扩展名。

当你需要在源代码中包含头文件的时候,你可以使用标准的 #include 编译选项,也可以使用OC提供的 #import @class

那么他们之间有什么区别呢?

  • #include <> :用于对系统文件的引用,编译器会在系统文件目录下去查找该文件。#include “xx.h”:用于对用户自定义的文件的引用,编译器首先会去用户目录下查找,然后去安装目录,最后去系统目录查找。
    注意: #include: 如果CLass A 导入了Class B, Class B的头文件里又导入了Class A的头文件, 这样会发生循环引用.所以我们尽量不要在.h文件中导入用户自定义的类文件.h (但是如果在.h文件中有代理的话可以在.h中直接导入另一个.h 或者可以把代理单独写一个.h文件)
    而 #include 如果 CLass A 导入了Class B, Class B的头文件里又导入了Class A的头文件 , 这样会发生交叉导入.
  • #import 功能与include基本相同,不过它避免了重复引用的问题。所以在OC中我们基本用的都是import。
  • @class 一般用于在.h头文件中需要定义一个某个类型的属性的时候用到的, 防止在.h文件中导入另一个.h文件, 防止循环导入, 但如果在.h用@class 后一定要在.m中#import 对应的.h文件 注意:不要在.m中导入另一个类的.m文件

接下来是接口和实现

在Objective里完成的文件被称为界面文件,该类文件的定义被称为实现文件。

一个简单的界面文件MyClass.h将如图所示:

@interface MyClass:NSObject{ 
// 类变量声明
}
// 类属性声明
// 类方法和声明
@end

至于.m文件

@implementation MyClass
// 类方法定义
@end

有了类之后我们肯定要创建对象的
创建对象

MyClass  *myclass = [[MyClass alloc]init] ;

继续C语言学习时候的逻辑,创建完一个对象之后
我们一般会调用其某个方法来实现某种功能

方法声明:

-(returnType)methodName:(typeName) variable1 :(typeName)variable2;

类似这样:

-(void)setName:(NSString)name;//设置名字

那么当我们调用的时候就是:

[myclass setName:@"myname"];

当然OC还有提供另外一种方法———类方法
直接而无需创建的对象,可以访问类方法。他们没有任何变量和它关联的对象。

+(void)simpleClassMethod;

可以直接通过类名进行访问

[MyClass simpleClassMethod];

简单的说大概就是有两种方法 一种”-“方法(实例方法) 一种”+”方法(类方法),
至于其有什么具体区别,后续文章在做介绍.

接下来则是OC的主要类型,

1.Objective-C数据类型可以分为:基本数据类型、对象数据类型和id类型。

2.基本数据类型有:int、float、double和char类型…。

3.对象类型就是类或协议所声明的指针类型,例如:

NSAutoreleasePool *pool ,其中,NSAutoreleasePool是一个类,NSAutoreleasePool *是它指针类型或叫对象类型。

4.id类型可以表示任何类型,一般只是表示对象类型,不表示基本数据类型,所以刚才的变量可以声明pool也可以声明为id pool。
当然这些数据类型也会单独详细解释,在后续的文章中…
除开基础类型,比如NSString NSarray NSDictionary…都会挨个单独介绍…

数据类型有了,再接下来就是修饰这些类型的修饰符了.
OC中我们可能会看到这些修饰符
weak,strong,retain,assign,copy,nonatomic,natomic,readonly,readwrite
通常在使用的时候,我们都有这样的习惯,
1.修饰基础类型会用assign
2.修饰字符串会用copy,strong等
3.修饰对象的会用strong,weak,copy
4.修饰代理会用weak,assign
5.修饰block会用copy

当然什么情况下用什么,该怎么用,需要具体到开发实例当中去…
至于其中的区别,同上.单独另说….

先总结一下,OC的产生,OC的文件类型,OC的类的定义,OC的方法的实现和定义,OC的数据类型,基本上这些就是OC的最常用的东西了,
那么可能会说,有这些我能开发什么?
就算加上C语言基础,还是什么都不能开发呀.
没有错,正所谓工欲善其事必先利其器,我们想要做开发,那么肯定的我们要知道这个开发环境,开发语言大概的介绍不是?
要是语言都不了解,说什么开发呢?
就算开发了,后续再说原理,也就没有那么容易解释了…

所以不要急,慢慢来…
接下来就开始真正的用事实说话了,
我会按照OC的先逐一介绍OC的常用数据类型,和常用方法,
在此基础上,我们就能实现很多方法,来达到我们想要的需求,再接下来是单独介绍开发中常用的控件,自定义控件…..

一点一点来…

系列:iOS开发-前言+大纲
http://blog.csdn.net/spicyShrimp/article/details/62218521

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值