您的位置:首页 > 移动开发 > Objective-C

Objective-C 基础教程第二章,对C的扩展

2022-02-24 22:52 1686 查看

[toc]

Object-C 基础教程第二章,对C的扩展

前言

​ 虽然Objective-C知识在C语言的基础上添加了一些新特性,但它非常好用!本章书本中主要是教我们如何利用Xcode创建一个Objective-C版的Hello,World!书中用的是很老版本的Xcode了,这章笔记我会记录自己用Xcode12来创建一个Hello,World工程。

创建Objective-C 版Hello World

依次打开Xcode后,选择Create a new Xcode project -> 选择macOS -> CommandLine Tool(命令行版控制台程序)。

工程名写HelloWorld,然后下面的ID你可以写com.你昵称,比如我是com.VxerLee,然后点Next创建

接着点运行,你的第一个Objective-C版的HelloWorld就运行成功了!

解析 Objective-C HelloWorld程序

首先Objective-C程序的源文件名都是以

.m
为后缀,然后我们看源码中可以发现和C语言一样,它也是以main函数为入口而且返回值类型、参数都一样,因为毕竟OC是C的扩展。接着再仔细看代码中剩下几行与C语言还是有细微的差别,比如说这个
#import
,当然你如果学过Java、Go、Rust、Python语法的话对这个import就很熟悉,类似导入包名的意思。

import 语句

和C语言一样,OC也是使用头文件来包含结构体、符号常量、函数原型等元素的声明。

在C语言中我们用

#include
语句来通知编译器查询头文件中相应的定义代码。

在OC中我们也可以用#include来达到通用的目的,

不过
最好不要这样做,因为你#include时候会导致一个头文件被多次包含,你就必须修改头文件添加一些宏定义这样就很麻烦!。所以Xocde编译器提供了
#import
语法,他使你头文件无论如何都只被包含一次,而且还能使导入头文件时候加载速度变快,这是include所做不到的地方。

#import <Foundation/Foundation.h>
//告诉编译器查找Foundation框架中的Foundation.h头文件

框架

那么什么是框架?

书中说框架是

一种把头文件、库、图片、声音等内容聚集在一个独立单元中的集合体。
,应该就是把库和三方东西打包起来了。

Cocoa组成部分有(Foundation)、(Application Kit)也叫AppKit框架,其中Foundation框架处理的是用户界面之下的那些层的特性,比如数据结构和通信机制,AppKit则类似Windows中的MFC(图形界面)框架。

NSLog()和@"字符串"

我们的HelloWorld工程中有这么一句代码,其中这个

NSLog
函数就是在
Foundation
框架中声明的,其功能类似printf在控制台输出参数的内容。

NSLog(@"Hello,World!")

NS前缀

其中Foundation框架中的大量函数都是以NS开头的,这是为了避免名称冲突,而且Cocoa的前身是NextSTEP,所以就用了NS前缀。

NSString:@是本体

其中我们的NSLog参数中字符串前面加了

@
符号。

在C#语法中也有类似@符号,它代表@包含的字符串所有符号不需要被转义,比如

C:\
不用转义成
C:\\

而在OC中@符号代表这字符串作为Cocoa的NSString元素来处理,什么意思呢?

通俗点讲就是@包含的字符串变成了NSString的对象了,你可以在字符串后加.来调用函数或者是访问属性。

Objective-C HelloWorld工程总结

通过学习书上的这一小节,我学会了如何使用Xcode创建工程,并且了解了OC中用#import导入头文件的原理,学会了调用函数输出到控制台中,并且了解了OC中带@符号的字符串意义。

布尔类型

OC中布尔类型的关键字是

BOOL
,它具有
YES
NO
两个值。顺便提一下OC中的BOOL类型比C语言中的bool类型早诞生了十多年

创建一个名为BOOL Party的工程

#import <Foundation/Foundation.h>

/*
*函数:areIntsDifferent
*说明:如果两个参数一样返回YES否则返回NO
*/
BOOL areIntsDifferent(int arg1,int arg2)
{
if(arg1 == arg2)
{
return (NO);
}else{
return (YES);
}
}

/*
*函数 boolString
*说明 输入BOOL值,返回对应的YES 和 NO字符串
*/
NSString *boolString(BOOL yesNo)
{
if(yesNo == NO)
{
return (@"NO");
}else
{
return (@"YES");
}
}

int main(int argc,const char* argv[])
{
BOOL areTheyDifferent;
areTheyDifferent = areIntsDifferent(5,5);
NSLog(@"%d和%d相同吗? %@",5,5,boolString(areTheyDifferent));

areTheyDifferent = areIntsDifferent(23,42);
NSLog(@"%d和%d相同吗?%@",23,42,boolString(areTheyDifferent));
return (0);
}

控制台输入如下:

本章小结

在书中的第2章中学会了创建HelloWorld工程,学会了#import、@""、BOOL、NSLog关键字的知识。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: