• 学习笔记之04-第一个OC程序解析


    查看项目结构可以发现这个程序中只有一个源文件:main.m

    打开main.m文件,代码如下

    复制代码
     1 #import <Foundation/Foundation.h>
     2 
     3 int main(int argc, const char * argv[])
     4 {
     5 
     6     @autoreleasepool {
     7         
     8         // insert code here...
     9         NSLog(@"Hello, World!");
    10         
    11     }
    12     return 0;
    13 }
    复制代码

    1.程序的入口点:main函数

    跟C程序一样,OC程序的入口点依然是main函数。在main.m的第3行已定义了一个main函数。

    2.@autoreleasepool

    在Java中,有垃圾回收机制,系统会自动回收不再使用的对象;而OC是不支持垃圾回收的,需要开发人员编写代码来释放对象所占用的内存。在第6行有个@autoreleasepool{},这是跟内存管理有关的,暂时不用理解它的意思,只需要记住:以后的OC代码都写在@autoreleasepool的{}内部。

    3.NSLog

    1> 第9行的NSLog是一个日志输出函数,它可以将传入的OC字符串参数输出到控制台上。

    2> 函数参数@"Hello, Wolrd!"是一个OC字符串,并不是C语言字符串,所有OC字符串的前面都有个@。

    3> 第9行代码NSLog(@"Hello, World!");的输出结果是:

    红框左边的信息是NSLog自动加上去的,比如日志输出时间、项目名称等。而且NSLog输出完毕后自动换行。

    4> NSLog也可以像C语言的printf函数一样支持格式符

    1 int age = 10;
    2 NSLog(@"My age is %i and height is %.2f", age, 1.55f);

    * %i表示接收整型数据

    * %f表示接收浮点型数据,%.2f表示保留2位小数

    * 输出结果:

    2013-04-06 17:43:07.380 第一个OC程序[693:303] My age is 10 and height is 1.55

    4.#import

    1> #import是一个预处理指令,作用跟C语言的#include类似,都是 包含(拷贝)某个文件的内容 到 预处理指令所在的位置。

    2> 第1行的#import <Foundation/Foundation.h>表示包含Foundation框架中的Foundation.h文件。

    1) Foundation框架中包含了很多常用的类和函数,比如字符串处理类NSString、日志输出函数NSLog。它的重要程度相当于Java中的java.lang.*

    2) Foundation框架和Foundation.h文件的位置:

    3> 在C语言专题的第三讲说 过:.h称为头文件,一般用来声明一些函数,想要使用这些函数,就必须用#include包含函数所在的头文件。我们在第9行中使用的NSLog函数存在 于Foundation.h文件中,因此要先包含Foundation.h文件才能使用NSLog函数。就好像在Java中,你用import关键字引入 一个类后才能正常使用这个类。

    4> 在CC++中,我们用#include来包含头文件,缺点就是同一个头文件可能被包含多次。为了解决这个问题,一般会这样写头文件:

    复制代码
    #ifndef _TEST_H_
    #define _TEST_H_
    
    /*.....*/
    
    #endif
    复制代码

    我们在OC中,就使用#import来包含头文件,优点是可以自动防止同一个头文件被包含多次。

    5> #import <...>表示包含系统自带的文件,#import "..."表示包含开发人员自己创建的文件

  • 相关阅读:
    系统分析师思维导图
    系统分析师案例分析知识点——虚拟内存篇
    系统分析师案例分析知识点——进程管理问题
    系统分析师案例分析知识点——进程同步问题
    200行代码实现RPC框架
    由vue3引起的一段值得记录经历
    PetaPoco在ASP.NET Core 2.2中使用注入方式访问数据库
    在.net core 中PetaPoco结合EntityFrameworkCore使用codefirst方法进行开发
    Quartz.NET的简单任务管理类
    System.Action的使用(lambda 表达式)
  • 原文地址:https://www.cnblogs.com/tlios/p/4071435.html
Copyright © 2020-2023  润新知