pthread
導入頭文件
#import <pthread.h>
pthread演練
- (void)pthreadDemo {
pthread_t threadId = NULL;
NSString *str = @"Hello Pthread";
int result = pthread_create(&threadId, NULL, demo, (__bridge void *)(str));
if (result == 0) {
NSLog(@"創建線程 OK");
} else {
NSLog(@"創建線程失敗 %d", result);
}
}
void *demo(void *params) {
NSString *str = (__bridge NSString *)(params);
NSLog(@"%@ - %@", [NSThread currentThread], str);
return NULL;
}
小結
- 在 C 語言中,沒有
對象
的概念,對象是以結構體
的方式來實現的
- 通常,在 C 語言框架中,對象類型以
_t/Ref
結尾,而且聲明時不需要使用 *
- C 語言中的
void *
和 OC 中的 id
是等價的
- 內存管理
- 在 OC 中,如果是
ARC
開發,編譯器會在編譯時,根據代碼結構,自動添加 retain
/release
/autorelease
- 但是,
ARC
只負責管理 OC
部分的內存管理,而不負責 C 語言
代碼的內存管理
- 因此,開發過程中,如果使用的
C
語言框架出現 retain
/create
/copy
/new
等字樣的函數,大多都需要 release
,否則會出現內存泄漏
- 在混合開發時,如果在
C
和 OC
之間傳遞數據,需要使用 __bridge
進行橋接,橋接
的目的就是爲了告訴編譯器如何管理內存
- 橋接的添加可以藉助 Xcode 的輔助功能添加
MRC
中不需要使用橋接