iOS开发系列---Objective-C之基础知识
来源:互联网 发布:21天学通c语言电子版 编辑:程序博客网 时间:2024/04/30 13:10
一、Objective-C语言概述
Objective-C是一种面向对象的计算机语言,Brad J Cox 在20世纪80年代设计了Objective-C,该语言是基于SmallTalk-80。1988年NeXT发布了Objective-C,它的开发环境和类库叫"NEXTSTEP",1994年NeXT与Sun发布了标准的NEXTSTEP系统,取名"OPENSTEP",软件自由基金会OPENSTEP版本叫做GNUStep。
1996年苹果公司开始支持NeXT,把NEXTSTEP/OPENSTEP用于Mac OS X操作系统开发,它的版本和开发环境叫做Cocoa,使用Objective-C作为基础语言,开发工具是Xcode和Interface Builder。2007年苹果公司推出Objective-C 2.0,Objective-C是Mac OS X和iOS开发的基础语言。
二、第一个Objective-C程序
打开Xcode,创建一个新项目,选择命令行程序;
选择程序语言为Ojbective-C并输入项目名称;
默认生成一个项目结构;
程序源代码:
// main.m// helloworld//// Created by yangjun on 16/11/24.// Copyright © 2016年 yangjun. All rights reserved.//#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); } return 0;}
上面是通过Xcode创建的第一个Objective-C程序,这是一个经典的“ Hello,World!”。运行结果如下:下面对上面的代码做一下简单解释:
- 首先#import是一个导入命令,类似于C语言的#include命令,但是相对于#include而言,#import有效的处理了重复导入的问题,在C语言中也提到过如何通过条件编译解决重复导入,而在Objective-C中你不需要处理了,#import已经自动进行了重复处理;与#include类似,导入系统类库使用<>,导入自定义类库使用””;
- Foundation.h是Foundation框架中的头文件,这是Objective-C中的一个基础类库,基本上后面我们用到的所有Objective-C的代码都需要引入这个类库;
- @autoreleasepool是Objective-C的关键字,它的作用是对包含在这个关键字后面大包括内的程序会自动进行内存回收,不需要开发人员手动释放无用的对象;当然表面上看起来这有点类似于C#和Java的内存垃圾回收机制,但是事实上他们的原理完全不同,以后再做具体解释。
- NSLog是标准输出函数,类似于C语言中的printf()函数,但是它会自动换行,当然它同样支持格式输出(例如%i表示输出整形数据,%f输出浮点型数据),这个函数在Fundation.h中声明;
- @”Hello,World!”,是一个字符串常量,在Objective-C中字符串前需要使用@符号;
扩展--Objective-C语法特点
- Objective-C中没有命名空间(C#)或包(Java)的概念,那也就是说在同一个应用中不能同时存在两个完全相同的类名,通常情况下我们通过前缀加以区分,例如在Objective-C中的NSString、NSLog中的NS就是前缀。
NS其实是NeXTSTEP缩写,是乔布斯离开苹果后在NeXT公司所开发的系统,这个操作系统在当时虽然没有获得广泛认同,但是却为后面Mac OX奠定了基础。
- Objective-C中很多关键字都是以@开头(例如@autoreleasepool、@interface、@protocol),另外需要注意的是为了区分C语言中的字符串,Objective-C中的字符串也必须加上@。
三、基本数据类型
在Objective-C 编程语言中,基本数据类型除了C语言中的char、int、float、double之外还有:
- BOOL类型,包含两个值YES和NO,其实Objective-C中的布尔类型就是整数1和0;
- id类型,是一个对象类型,可以表示所有对象;
- NSString是Fundation框架中定义的字符串类型;
// main.m// helloworld//// Created by yangjun on 16/11/25.// Copyright © 2016年 yangjun. 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;}下面是常用格式符:
格式符
说明
%i
以十进制形式输出整数,注意%hi输出短整形,%li长整形
%u
输出无符号整形(unsigned int)
%o
以不带符号八进制输出整数
%x
以不带符号十六进制输出整数
%c
输出一个字符
%f
以小数形式输出单精度、双精度浮点数,%lf长双精度类型
%@
输出一个字符串
%p
输出一个对象类型
本文转自:http://www.cnblogs.com/kenshincui/p/3861300.html
0 0
- iOS开发系列---Objective-C之基础知识
- IOS开发系列--C语言之基础知识
- iOS开发系列--C语言之基础知识
- IOS开发系列--C语言之基础知识
- IOS开发系列--Objective-C之KVC、KVO
- IOS开发系列—Objective-C之Foundation框架(一)
- IOS开发系列—Objective-C之Foundation框架
- IOS开发系列--Objective-C之KVC、KVO
- IOS开发系列--Objective-C之协议、代码块、分类
- IOS开发系列—Objective-C之基础概览
- IOS开发系列—Objective-C之Foundation框架
- IOS开发系列—Objective-C之Foundation框架
- iOS开发系列--Objective-C之KVC、KVO
- IOS开发系列—Objective-C之Foundation框架
- IOS开发系列--Objective-C之KVC、KVO
- IOS开发系列--Objective-C之协议、代码块、分类
- IOS开发系列--Objective-C之KVC、KVO
- IOS开发系列—Objective-C之Foundation框架
- 类加载与垃圾回收
- JavaWeb框架设计之菜单设计
- constructor的运用
- IPC机制
- 近一个月的面试总结
- iOS开发系列---Objective-C之基础知识
- 资源马克-20161124- php smtp 带附件的邮件发送
- 如何使用openssl生成RSA公钥和私钥对
- 对于ztree的使用详解
- MFC对话框整合
- Linux中ifreq 结构体分析和使用(转)
- 矩阵链乘问题
- Maven学习 (四) 使用Nexus搭建Maven私服
- Learn GIT