iphone開發總結1

2021-06-16 05:53:20 字數 2460 閱讀 9648

降低耦合性

- (ibaction)dosomething:(id)sender

將引數的型別設定為id可以降低控制器與其控制的view(控制項也屬於view)之間的耦合性,因為這樣在改變所使用的view時,控制器不需要作任何修改。

使用執行緒注意事項

慎用執行緒,能不開執行緒的地方盡量不開執行緒。如確實需要使用執行緒時,需要主要以下幾點:

1.如果新執行緒執行的內容(selector)是由當前物件所提供,則完全可以使用  [self performselectorinbackground:withobject:]代替[nsthread  detachnewthreadselector:totarget:withobject:]。

2.新執行緒執行的內容(selector)中需要設定自動釋放池,以避免記憶體洩漏。

-(void)somemethodexcutedbynewthread{

nsautoreleasepool* pool = [[nsautoreleasepool alloc]init];

...//新執行緒具體執行的內容。

[pool drain];

3.嚴格的說,在非主線程中修改view是不合理的。雖然大多數情況,非主線程中修改view中的內容並不會出問題,但你不能99.999%的安全。所以不推薦在非主線程中修改控制項或view中的內容。

下面是如何使用執行緒的具體例項:

- (void)updateprogressview:(nsarray *)progressviewandprogress{

uiprogressview *progressview = [progressviewandprogress objectatindex:0];

nsnumber *progress = [progressviewandprogress objectatindex:1];

//執行到這裡時, progressview物件肯定還存在,不管self.view存不存在。所以不需要判斷progressview是否已經完成被釋放了

progressview.progress = [progress floatvalue];

- (void)downloadpic:(uiprogressview *)progressview{

nsautoreleasepool *pool = [[nsautoreleasepool alloc] init];

nsnumber *progress;

nsarray *progressviewandprogress;

for (int i = 0; i < 100; i++) {

progress = [nsnumber numberwithfloat: (i + 1.0) / 100];

progressviewandprogress = [nsarray arraywithobjects:progressview, progress, nil];

= (i + 1.0) /100; 這樣不行,非要在另外乙個執行緒中更新才行

[self performselectoronmainthread:@selector(updateprogressview:)

withobject:progressviewandprogress                              

waituntildone:yes];

[pool drain];

- (ibaction)dowloadpicandupdateprogressview:(id)sender{

uiprogressview *progressview = [[uiprogressview alloc] initwithprogressviewstyle:uiprogressviewstyledefault];

progressview.center = cgpointmake(300, 400);

progressview.bounds = cgrectmake(0, 0, 300, 10);

[self.view  addsubview:progressview];

//可以使用[nsthread  detachnewthreadselector:@selecto(downloadpic:) totarget:self withobject:progressview]代替

[self performselectorinbackground:@selector(downloadpic:) withobject:progressview];

//這樣做會卡住介面

//[self performselectoronmainthread:@selector(downloadpic:) withobject:progressview waituntildone:no]; 

[progressview release];

iPhone遊戲開發

總的來說這個問題比較好解決,xcode新建的工程中就有opengl es這一項,基本的呼叫關係都給你弄好了。下面說說我開發的過程 說到底我絕大多數時間還是在win平台下進行開發的,儘管業界說mac的系統如何如何好,xcode功能如何如何強大,但還是感覺沒有windows好用,沒有vs方便 這個問題也...

iphone開發雜談

很久沒看到這麼好的文章了,此文摘自stackoverflow的翻譯,獻給iphone開發的同仁們,同時也給自己做個筆記 192個加分的回答 有些初學時的做法,現在我認為是不標準的。2 說起來私有,我傾向於把似有方法定義在.m檔案裡,放在乙個私有的category內,如下 import myclass...

iphone開發前景

說起iphone開發,必然要先說說iphone了,也就是蘋果手機,總體來說,蘋果手機的出現帶動了一系列的it行業的迅猛增長,在2007 年6月29日蘋果公司首發iphone,在當年9月10日iphone就突破了100萬台,蘋果公司股價漲至180美元,由於蘋果手機硬體和系統幾乎完美的結合,給了使用者非...