2012-07-24 99 views
0

由於在iOS 5.1上使用Xcode 4.3進行調試的速度非常慢,因此在設備上啓動/安裝應用程序時,我使用的模擬器啓動速度要快得多。 (見我的問題關於這個問題在這裏https://stackoverflow.com/questions/11541288/xcode-4-3-with-ios5-1-pauses-about-10secs-when-debug-starts-simulator-starts-i在iPhone上模擬發送的短信

因此,所有我需要做的是這樣的:

MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init]; 
picker.messageComposeDelegate = delegate; 
NSString *s = @"1234567"; 
picker.recipients =[NSArray arrayWithObject: s]; 
picker.body =smsTxt; 
if (simulationMode) { 
    MessageComposeResult result = MessageComposeResultSent;   <----------- 
    [delegate messageComposeViewController:picker didFinishWithResult: result]; 
} else 
    [delegate presentModalViewController:picker animated:YES]; 

這裏的問題是,現在在iOS模擬器運行時MFMessageComposeViewController不能實例化並總是產生零。

有沒有辦法在iOS模擬器上創建另一個對象,它與MFMessageComposeViewController兼容,並可以像MFMessageComposeViewController一樣傳遞?

事情是這樣的:

MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init]; 
    picker.messageComposeDelegate = delegate; 
    NSString *s = @"1234567"; 
    picker.recipients =[NSArray arrayWithObject: s]; 
    picker.body =smsTxt; 
    if (simulationMode) { 
     MyOwnMFMessageComposeViewController *mypicker = [[MFMessageComposeViewController alloc] init]; 
     mypicker.messageComposeDelegate = delegate; 
     NSString *s = @"1234567"; 
     mypicker.recipients =[NSArray arrayWithObject: s]; 
     mypicker.body =smsTxt; 
     MessageComposeResult result = MessageComposeResultSent; 
     picker = (MFMessageComposeViewController) mypicker;   
     [delegate messageComposeViewController:picker didFinishWithResult: result]; 
    } else 
     [delegate presentModalViewController:picker animated:YES]; 

回答

1

什麼你正在尋找被稱爲「模擬對象」,往往是在測試驅動開發。基本上你所做的是創建一個MFMessageComposeViewController的子類。這個子類與mfmessagecomposeviewcontroller的工作方式完全一樣,除了你還創建實例變量來顯示發生了什麼事情。

因此,例如,當您的委託調用messageComposeViewController:didFinishWithResult。模擬對象可能會存儲結果並標記該方法已被觸發。請注意,這不會實際發送任何內容,只是簡單地告訴您,委託人被解僱並且在真實對象上工作。

+0

我將如何創建一個「模擬對象」,它產生的東西不是零時創建?我定義了一個MFMessageComposeViewController的子類,並寫了MyMFMessageComposeViewController * myPicker = [[MyMFMessageComposeViewController alloc] init]; - > myPicker仍然是零?謝謝! – user387184 2012-07-24 16:09:39

+0

嗯......它可能是因爲它的子類不能在模擬器上工作,所以子類仍然是零。試試把它作爲nsobject的一個子類來響應你的委託協議 – Msencenb 2012-07-24 16:21:07

+0

是的 - 但是它不會和MFMessageComposeViewController具有相同的結構,而且我不能強制它成爲MFMessageComposeViewController,所以我不能調用[delegate messageComposeViewController:picker didFinishWithResult:result]; - 這是我真正需要做的 – user387184 2012-07-24 16:22:59