Objective-C_1之基础概览

摘自:http://www.cnblogs.com/kenshincui/p/3861300.html

概览

前面我们已经用了几章内容进行C语言介绍,当然要通过几篇文章完整的介绍C语言的知 识是不太现实的,例如C语言的文件操作、内存申请等我们都没有重点介绍,当然核心知识点基本都已经提到了,后面有时间我们会继续扩充。今天我们正式开始学 习Objective-C,以后简称“ObjC”,ObjC是在C语言的基础上加上了一层面向对象的特性,它完全兼容C语言,甚至可以混写C++。它是 Mac OS X和IOS的主要开发语言,从IOS发布之后可以说ObjC的地位呈直线上升趋势,当前ObjC已经是仅次于C语言、Java的第三大编程语言。今天我们 先简单的看一下C语言的一些基础内容:

  1. 第一个ObjC程序
  2. 基本数据类型

第一个ObjC程序

打开Xcode,创建一个新项目

Xcode

选择命令行程序

CommandLine

选择程序语言为Ojbective-C并输入项目名称

ProjectName

选择保存目录

SelectFolder

默认生成一个基本的项目结构

Program

程序源代码


 //

//  main.m
       // Basics
       //
       // Created by Kenshin Cui on 14-2-1.
       // Copyright (c) 2014年 Kenshin Cui. All rights reserved.
       //
 
#import int main(int argc, const char * argv[])
 {
 @autoreleasepool {
// insert code here...
     NSLog(@
"Hello, World!");
}

      return
0;
 }

上面是通过Xcode创建的第一个ObjC程序,这是一个经典的“Hello,World!”。运行结果如下:

RunResult

下面对上面的代码做一下简单解释:

  1. 首先#import是一个导入命令,类似于C语言的#include命令,但是相对于#include而言,#import有效的处理了重复导入 的问题,在C语言中也提到过如何通过条件编译解决重复导入,而在ObjC中你不需要处理了,#import已经自动进行了重复处理;与#include类 似,导入系统类库使用<>,导入自定义类库使用””;
  2. Foundation.h是Foundation框架中的头文件,这是ObjC中的一个基础类库,基本上后面我们用到的所有ObjC的代码都需要引入这个类库;
  3. @autoreleasepool是ObjC的关键字,它的作用是对包含在这个关键字后面大包括内的程序会自动进行内存回收,不需要开 发人员手动释放无用的对象;当然表面上看起来这有点类似于C#和Java的内存垃圾回收机制,但是事实上他们的原理完全不同,以后再做具体解释。
  4. NSLog是标准输出函数,类似于C语言中的printf()函数,但是它会自动换行,当然它同样支持格式输出(例如%i表示输出整形数据,%f输出浮点型数据),这个函数在Fundation.h中声明;
  5. @”Hello,World!”,是一个字符串常量,在ObjC中字符串前需要使用@符号;

 

扩展--OjbC语法特点

  • ObjC中没有命名空间(C#)或包(Java)的概念,那也就是说在同一个应用中不能同时存在两个完全相同的类名,通常情况下我们通过前缀加以区分,例如在ObjC中的NSString、NSLog中的NS就是前缀。

NS其实是NeXTSTEP缩写,是乔布斯离开苹果后在NeXT公司所开发的系统,这个操作系统在当时虽然没有获得广泛认同,但是却为后面Mac OX奠定了基础。

  • ObjC中很多关键字都是以@开头(例如@autoreleasepool、@interface、@protocol),另外需要注意的是为了区分C语言中的字符串,ObjC中的字符串也必须加上@。

基本数据类型

在ObjC中的基本数据类型除了C语言中的char、int、float、double之外还有:

  1. BOOL类型,包含两个值YES和NO,其实ObjC中的布尔类型就是整数1和0;
  2. id类型,是一个对象类型,可以表示所有对象;
  3. NSString是Fundation框架中定义的字符串类型;
//
 // main.m
// Basics
//
// Created by Kenshin Cui on 14-2-1.
// Copyright (c) 2014年 Kenshin Cui. All rights reserved.
//
 
#import int main(int argc, const char * argv[])
 {
 @autoreleasepool {

char
a='a'; int b=1;
 
float c=8.5;
double
d=8.5e+12;
 
char e='a';
 BOOL f=YES,g=NO;
NSLog(@
"a=%c,b=%i,c=%f,d=%f,e=%c,f=%i,g=%i",a,b,c,d,e,f,g);
 
//结果:a=a,b=1,c=8.500000,d=8500000000000.000000,e=a,f=1,g=0
NSString *str=@"Hello,World!";
NSLog(@
"str=%@",str);
//结果:str=Hello,World!
NSLog(@
"object=%p",nil);
//结果:object=0x0
 
}
return
0;
}

关于上面id类型在这里不做过多的解释,后面我们会专门说到,下面列出常用格式符:

格式化输出

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值