0
我該怎麼說閉合件將保留哪種類型的對象?是否有任何特定的規則或封閉類型列表封鎖將/不會保留?塊在閉包中將保留什麼類型的對象?
我該怎麼說閉合件將保留哪種類型的對象?是否有任何特定的規則或封閉類型列表封鎖將/不會保留?塊在閉包中將保留什麼類型的對象?
保留所有Objective-C對象。其他一切都是簡單的複製。例如,這裏有三個變量:
NSArray* array = [NSArray array];
int i = 0;
int* ptr = malloc(sizeof(int));
所有這三個變量可以從塊讀取裏面。但是,只有array
將被保留,因爲它是唯一可以調用retain
方法的變量。
應該特別注意確保ptr
指向的位置在塊被執行時仍然存在,因爲它是一個無法保留的指針。
如果我有'int i'和'int * i',兩者都會保留嗎?我如何區分Obj-C和非Obj-C對象? – Pablo 2011-06-13 01:23:44
@Michael,Objective-C對象是可以調用Objective-C方法的值。例如,如果你有一個名爲'foo'的'NSString',你可以調用'[foo retain]'。如果你不能這樣做,它不是一個Objective-C對象。我編輯了我的答案。 – zneak 2011-06-13 01:30:44
優秀的答案!謝謝!!! – Pablo 2011-06-13 01:33:05