NSMutableArray *arr = [[NSMutableArray alloc] initWithCapacity : 0];//array.retainCount = 1 NSString *str1 = [[NSString alloc] initWithString : @"A"];//str1.retainCount = 1 NSString *str2 = [[NSString alloc] initWithString : @"A"];//str2.retainCount = 1 [arr addObject : str1];//str1.retainCount = 2 [arr addObject : str2];//str2.retainCount = 2 [arr removeObject : str1];//str1.retainCount = 1 [arr release];//array.retainCount = 0;str2.retainCount = 1 //系統回收 array [str1 release];//str1.retainCount = 0 [str2 release];//str2.retainCount = 0 //系統回收str1&str2
2011年8月28日 星期日
Objective-C 的記憶體回收機制(中)
在上一篇文章裡面談到了自己對物件記憶體的操作,難道就只有開發者會對物件做計數器(retainCount)的操作嗎?答案是否定!有一些 api 會自動對物件的 retainCount +1或是 -1,最常見的例子就是陣列的操作。例如:
Objective-C 的記憶體回收機制(上)
這陣子為了 iPhone 學了 Objectiv-C ,一直對他的記憶體管理機制頗有微詞(笑),什麼時候該釋放,什麼時候該保留,真的是一點頭緒都沒有!建議初學者先把 Apple 官方的關於記憶體回收的說明文件先讀過一遍。(網頁版,PDF版),內容有空的話我再翻譯!
首先先解釋為什麼變數有時候要加星號(*),有時候又不加。這是因為在 C 與 C++,以及基於這兩種語言加以改良的 Objective-C ,星號(*)代表的意思是指向某個記憶體的指標(pointer), 而不加星號(*)表示是取值,例如:
首先先解釋為什麼變數有時候要加星號(*),有時候又不加。這是因為在 C 與 C++,以及基於這兩種語言加以改良的 Objective-C ,星號(*)代表的意思是指向某個記憶體的指標(pointer), 而不加星號(*)表示是取值,例如:
int number = 0;//取值 char[] name = ['n','a','m','e']; char *str = name;//取址
2011年8月23日 星期二
html 檔案上傳控制項 onChange事件只會觸發一次
困擾了好久的問題,終於解決了!
原本的事件繫結
改成
----以上是 JQuery 的用法-------
一般的做法是替換掉file_upload
原本的事件繫結
$("#file_upload").bind('change',function(){});
改成
$("#file_upload").live('change',function(){});
----以上是 JQuery 的用法-------
一般的做法是替換掉file_upload
$('#file_upload').replaceWith('<input id="file_upload" name="file_upload" type="file">');
訂閱:
文章 (Atom)