欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

iOS开发系列—Objective-C之基础概览,iosobjective-c

来源: 开发者 投稿于  被查看 28291 次 评论:242

iOS开发系列—Objective-C之基础概览,iosobjective-c


概览

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

第一个ObjC程序

打开Xcode,创建一个新项目

选择命令行程序

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

选择保存目录

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

程序源代码

//
//  main.m
//  Basics
//
//  Created by Kenshin Cui on 14-2-1.
//  Copyright (c) 2014年 Kenshin Cui. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
    }
    return 0;
}

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

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

 

扩展--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之外还有:

//
//  main.m
//  Basics
//
//  Created by Kenshin Cui on 14-2-1.
//  Copyright (c) 2014年 Kenshin Cui. All rights reserved.
//

#import <Foundation/Foundation.h>

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类型在这里不做过多的解释,后面我们会专门说到,下面列出常用格式符:

 

注意

1.在C或者ObjC中整形可以使用%i也可以使用%d来格式化,只有使用scanf()输入的时候二者才有区别(由于%d始终被编译器解释为decimal intergeer所以即使输入010会被认为是整形10,而%i则会将前面的0或者0x认为此输入是八进制或十六进制整数);

2.%p本质就是输出指针地址,在32位编译器下对于一个指针类型使用%x输出和%p输出其实是一样的,只是后者会在前面加上“ox”(注意在64位编译器下由于指针长度8byte,而整形只有4byte所以%x输出的内容只是%p的低位数据);

相关文章

    暂无相关文章

用户评论