iOS開發筆記(二)

來源:互聯網
上載者:User
文章目錄
  • 如何在iPhone應用程式中發送郵件

多線程之NSInvocationOperation

多線程編程是防止主線程堵塞,增加運行效率等等的最佳方法。而原始的多線程方法存在很多的毛病,包括線程鎖死等。在Cocoa中,Apple提供了NSOperation這個類,提供了一個優秀的多線程編程方法。

本次介紹NSOperation的子集,簡易方法的NSInvocationOperation:

@implementation MyCustomClass   - (void)launchTaskWithData:(id)data{    //建立一個NSInvocationOperation對象,並初始化到方法    //在這裡,selector參數後的值是你想在另外一個線程中啟動並執行方法(函數,Method)    //在這裡,object後的值是想傳遞給前面方法的資料    NSInvocationOperation* theOp = [[NSInvocationOperation alloc] initWithTarget:self                    selector:@selector(myTaskMethod:) object:data];   // 下面將我們建立的操作“Operation”加入到本地程式的共用隊列中(加入後方法就會立刻被執行)    // 更多的時候是由我們自己建立“操作”隊列    [[MyAppDelegate sharedOperationQueue] addOperation:theOp];}   // 這個是真正運行在另外一個線程的“方法”- (void)myTaskMethod:(id)data{    // Perform the task.}   @end

一個NSOperationQueue 操作隊列,就相當於一個線程管理器,而非一個線程。因為你可以設定這個線程管理器內可以並行啟動並執行的線程數量等等。下面是建立並初始化一個操作隊列:

@interface MyViewController : UIViewController {   NSOperationQueue *operationQueue;    //在標頭檔中聲明該隊列}@end   @implementation MyViewController   - (id)init{    self = [super init];    if (self) {        operationQueue = [[NSOperationQueue alloc] init]; //初始化操作隊列        [operationQueue setMaxConcurrentOperationCount:1];        //在這裡限定了該隊列只同時運行一個線程        //這個隊列已經可以使用了    }    return self;}   - (void)dealloc{    [operationQueue release];    //正如Alan經常說的,我們是程式的好公民,需要釋放記憶體!    [super dealloc];}   @end

簡單介紹之後,其實可以發現這種方法是非常簡單的。很多的時候我們使用多線程僅僅是為了防止主線程堵塞,而NSInvocationOperation就是最簡單的多線程編程,在iPhone編程中是經常被用到的。

如何在iPhone應用程式中發送郵件

轉自:http://blog.csdn.net/iefreer/archive/2009/10/28/4740517.aspx

3.0以前使用mailto URL,但是會退出當前應用程式

3.0後Apple提供了MessageUI framework可以在我們的應用程式內實現郵件發送功能,代碼示範參見:

https://developer.apple.com/iphone/library/samplecode/MailComposer/index.html

可以添加附件和以HTML格式發送郵件。

如果想要在郵件中添加URL如:http://ditu.at/tinyurl

可以如下編碼:

// Fill out the email body text

NSString *emailBody = [[NSString alloc]init];

NSArray *arSubviews = [shareView subviews];

UITextField *tvMessage = [arSubviews objectAtIndex:4];

emailBody = [NSString stringWithFormat:@"%@,%@ <a href = '%@'>%@</a>", tvMessage.text, NSLocalizedString(@"FOR_DETAILS",@""), 

[self.tinyURLList objectAtIndex:0],[self.tinyURLList objectAtIndex:0]];

如果想在郵件中提供你的App Store應用程式連結,可如下編碼:

NSString *pageLink = @"http://mugunthkumar.com/yourapp"; 

NSString *iTunesLink = @"http://link-to-yourapp"; 

NSString *emailBody =

[NSString stringWithFormat:@"%@\n\n<h3>Sent from <a href = '%@'>your app</a> on iPhone. <a href = '%@'>Download</a> yours from AppStore now!</h3>", @"test url", pageLink, iTunesLink];

記住使用HTML格式:

[mailPicker setMessageBody:emailBody isHTML:YES];

[self presentModalViewController:mailPicker animated:YES];

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.