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

目录

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(命令行版控制台程序)。

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

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

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

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

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

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

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

解析 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,它具有YESNO两个值。顺便提一下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);
}

控制台输入如下:

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

本章小结

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

上一篇:生成Excel文件


下一篇:java学习笔记-网络编程