iPhone開發技巧筆記壹

來源:互聯網
上載者:User

壹:iPhone記憶體管理中,涉及到malloc在堆上分配記憶體時,需要使用對應的free釋放堆記憶體,而不是單純的release相關的對象了事,如下代碼:

@interface MemoryTestProjViewController : UIViewController {

@public

NSMutableArray * memoryArray;

}

 

@end

 

@interface MemoryTestProjItem : NSObject

{

@public

char * innerItem;

}

@end

 

在進行初始化時為innerItem指標在堆空間上分配記憶體,但是要記得調用free函數進行堆空間的釋放,代碼如下:

- (void)viewDidUnload {

// Release any retained subviews of the main view.

// e.g. self.myOutlet = nil;

 

memoryArray = [[NSMutableArray alloc] initWithCapacity:10];

 

for(int i = 0;i < 1024;i++)

{

     MemoryTestProjItem* item = [[MemoryTestProjItem alloc] init];

    

     item->innerItem = (char*)malloc(1024);

    

     [memoryArray addObject:item];

    

     [item release];

     free(item->innerItem);

     free(item);

}

[memoryArray removeAllObjects];

}

貳:iPhone中如果使用CFHTTPMessageRef進行HTTP通訊的開發,那麼預設頭資訊裡並沒有Content-Length內容,需要進行顯示的設定,代碼如下:

NSString* contentLen = [[NSString alloc] initWithFormat"%d",[bodyData length]];

CFHTTPMessageSetHeaderFieldValue(myRequest,

CFSTR("Content-Length"), (CFStringRef)contentLen);

    

CFDataRef mySerializedRequest = CFHTTPMessageCopySerializedMessage(myRequest); // 序列化請求

上面代碼值得注意的是,CFSTR是iPhone中的一個宏,無法為其動態設定Content-Length的長度,例如下面的代碼是無法編譯通過的:

CFHTTPMessageSetHeaderFieldValue(myRequest,

CFSTR("Content-Length"), CFSTR([contentLen UTF8String]));

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.