欢迎指正,线程是如何执行应用程序的代码

ARC-数据类型需要释放的情况,arc-数据类型释放

// Foundation :  OC
// Core Foundation : C语言
// Foundation和Core Foundation框架的数据类型可以互相转换的

//NSString *str = @”123″; // Foundation
//CFStringRef str2 = (__bridge CFStringRef)str; // Core Foundation
//NSString *str3 = (__bridge NSString *)str2;
//    CFArrayRef —- NSArray
//    CFDictionaryRef —- NSDictionary
//    CFNumberRef —- NSNumber

// Core Foundation中手动创建的数据类型,都需要手动释放
//    CFArrayRef array = CFArrayCreate(NULL, NULL, 10, NULL);
//    CFRelease(array);
//
//
//    CGPathRef path = CGPathCreateMutable();
//    CGPathRetain(path);
//
//    CGPathRelease(path);
//    CGPathRelease(path);
/**
 凡是函数名中带有create\copy\new\retain等字眼,
都应该在不需要使用这个数据的时候进行release
 GCD的数据类型在ARC环境下不需要再做release
 CF(Core Foundation)的数据类型在ARC\MRC环境下都需要再做release

//
Foundation : OC // Core Foundation : C语言 // Foundation和Core
Foundation框架的数据类型可以互相转换的…

// Foundation :  OC
// Core Foundation : C语言
// Foundation和Core Foundation框架的数据类型可以互相转换的

//NSString *str = @”123″; // Foundation
//CFStringRef str2 = (__bridge CFStringRef)str; // Core Foundation
//NSString *str3 = (__bridge NSString *)str2;
//    CFArrayRef —- NSArray
//    CFDictionaryRef —- NSDictionary
//    CFNumberRef —- NSNumber

线程和进程问题

1.线程

应用程序中的代码是由线程来执行的

一个进程里至少包含一条线程

在一个应用程序启动之后,会默认开启一条线程->也就是主线程

主线程之外的线程都是–>子线程

问题:线程是如何执行应用程序的代码?

串行执行,在线程中的代码是按顺序执行的,同一时间内,只能执行一个代码块

2.进程

就是在系统中’正在运行’的应用程序!

进程为应用程序开辟独立的内存空间

如有不当、错误之处,欢迎指正!

// Core Foundation中手动创建的数据类型,都需要手动释放
//    CFArrayRef array = CFArrayCreate(NULL, NULL, 10, NULL);
//    CFRelease(array);
//
//
//    CGPathRef path = CGPathCreateMutable();
//    CGPathRetain(path);
//
//    CGPathRelease(path);
//    CGPathRelease(path);
/**
 凡是函数名中带有create\copy\new\retain等字眼,
都应该在不需要使用这个数据的时候进行release
 GCD的数据类型在ARC环境下不需要再做release
 CF(Core Foundation)的数据类型在ARC\MRC环境下都需要再做release

// Core Foundation中手动创建的数据类型,都需要手动释放
//    CFArrayRef array = CFArrayCreate(NULL, NULL, 10, NULL);
//    CFRelease(array);
//
//
//    CGPathRef path = CGPathCreateMutable();
//    CGPathRetain(path);
//
//    CGPathRelease(path);
//    CGPathRelease(path);
/**
 凡是函数名中带有create\copy\new\retain等字眼,
都应该在不需要使用这个数据的时候进行release
 GCD的数据类型在ARC环境下不需要再做release
 CF(Core Foundation)的数据类型在ARC\MRC环境下都需要再做release

创建线程的三种方法

+ (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target
withObject:(nullable id)argument;

– (instancetype)initWithTarget:(id)target selector:(SEL)selector
object:(nullable id)argument NS_AVAILABLE(10_5, 2_0);

– (void)performSelectorInBackground:(SEL)aSelector withObject:(nullable
id)arg NS_AVAILABLE(10_5, 2_0);

  • 1.Cocoa Foundation:
    NSDictionary
    NSArray
    NSString

  • 2.Core Foundation:
    CFDictionaryRef
    CFArrayRef
    CFStringRef

  • 3.区别:

    • 3.1

      • 3.1.1 Core Foundation中的数据类型是纯C,不是面向对象;
      • 3.1.2 Cocoa Foundation中的常用的数据类型是OC,更加面向对象;
    • 3.2 它们都能进行字符串,数组,字典操作;

      • 3.2.1 Core Foundation使用C语言的函数操作;
      • 3.2.2 Cocoa Foundation使用面向对象操作的;
    • 3.3

      • 3.3.1 Core Foundation框架 (Core Foundation.framework)
        是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务:

        • 3.3.1.1 群体数据类型 (数组,集合等);
        • 3.3.1.2 程序包;
        • 3.3.1.3 字符串管理;
        • 3.3.1.4 日期和时间管理;
        • 3.3.1.5 原始数据块管理;
        • 3.3.1.6 偏好管理;
        • 3.3.1.7 URL及数据流操作;
        • 3.3.1.8 线程和RunLoop;
        • 3.3.1.9 端口和socket通讯;
      • 3.3.2 Core Foundation框架和Cocoa
        Foundation框架紧密相关,它们为相同功能提供接口,但Cocoa
        Foundation框架提供Objective-C接口。如果您将Cocoa
        Foundation对象和Core
        Foundation类型掺杂使用,则可利用两个框架之间的 “toll-free
        bridging”。所谓的Toll-free
        bridging是说您可以在某个框架的方法或函数同时使用Core
        Foundation和Cocoa
        Foundation框架中的某些类型。很多数据类型支持这一特性,其中包括群体和字符串数据类型。每个框架的类和类型描述都会对某个对象是否为toll-free
        bridged,应和什么对象桥接进行说明。
      • 3.3.3
        在CocoaFoundation和CoreFoundation数据之间进行转换(没有任何内存管理,只是简单的转换)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章