• 第一个OC程序


    第一个OC程序源码如下:

    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[])
    {
        @autoreleasepool{
            
        NSLog(@"Hello,World!");
        }
        return 0;
    }

    下面对这个输出"Hello,World!"的OC程序做下介绍:

    #import

    #import是GCC编译器提供的,可以保证头文件只被包含一次。

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

    框架

    框架是一种聚集在一个单元的部件集合,包含头文件,库,图像,声音文件等。

    苹果公司将Cocoa,Carbon,QuickTime和OpenGL等技术作为框架集提供。Foundation框架是处理用户界面之下的层(layer)中的特性,例如数据结构和通信机制。

    每个框架都是一个重要的技术集合,通常包含数十个甚至上百个头文件。每个框架都有一个主头文件,它包含了该框架中的其它各个头文件。通过使用#import导入主头文件,可以使用该框架中所有的部件。

    Main函数

    Main函数的两个参数,argc表示参数(包括程序名)个数,argv是一个参数指针数组,并且每一个指针都指向一个字符串,表示一个参数。argv[0]就是程序名,argv[1]才是第一个参数。

    NSString *str = [NSString stringWithUTF8String:argv[0]];
    NSLog(@"%@",str);
    

    输出如下:

    NSLog函数

    NSLog(@"Hello,World!");

    向控制台输出”Hello,World!”,类似与C语言中的printf()。NSLog()接受一个字符串作为其第一个参数,该字符串可包含格式说明符(如%d)。

    @符号是OC在标准C语言基础上添加的特性之一,双引号中的字符串前有一个@符号,表示引用的字符串应该作为Cocoa的NSString元素来处理。

    表示换行

    表示Tab功能

    %i 表示整数

    %f 表示float

    %@ 表示字符串

    %d 表示double

    %c 表示字符char

    @autoreleasepool 自动释放池

    @autoreleasepool方便快捷管理内存的方案, 自动释放池是OC里面的一种内存回收机制,一般可以将一些临时变量添加到自动释放池中,统一回收释放,当自动释放池销毁时,池里面的所有对象都会调用一次release,也就是计数器会减1,但是自动释放池被销毁了,里面的对象并不一定会被销毁。

    OC对象发送一条autorelease消息,就会把这个对象添加到最近的自动释放池中也就是栈顶释放池中, Autorelease实际上是把对release的调用延迟了,对于每一次autorelease,系统只是把对象放入了当前的autorelease pool中,当pool被释放时,pool中所有的对象都会被调用release。

    自动释放池可以自动追踪需要延迟释放的对象。

    将对象添加自动释放池维护的列表中:[object autorelease];。

    当自动释放池本身销毁时,池子里的所有的对象对会release。

    使用来自Foundation,UIkit,AppKit等框架中的类是,也需要先创建自动释放池,因为来自这些框架的类会创建并返回自动释放的对象。

    创建自动释放池

    //MRC
    
    NSAutoReleasePool *pool = [[NSAutoReleasePool alloc]init];
    
    …//需要释放的对象
    
    [pool realse]
    
    //ARC
    
    @autoreleasepool
    {
    
             …//需要释放的对象
    
    }

    使用自动释放池

    自动释放池可以创建多个

    多个自动释放池形成栈式结构

    对象放入最近的栈顶的自动释放池

    不要把所有的对象都放入自动释放池,只放需要延迟释放的对象

    对于大量占有内存的对象,创建就近的自动释放池,保证它快速得到销毁

    以上就是对一个简单的完整的OC程序的分析,如有错误,请批评指正。

  • 相关阅读:
    C语言I博客作业02
    C语言II—博客作业01
    学期总结
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I 博客作业04
    C语言II博客作业04
    C语言II博客作业03
  • 原文地址:https://www.cnblogs.com/tgycoder/p/4851022.html
Copyright © 2020-2023  润新知