在iPhone上模拟发送的短信

在iPhone上模拟发送的短信

问题描述:

由于在iOS 5.1上使用Xcode 4.3进行调试的速度非常慢,因此在设备上启动/安装应用程序时,我使用的模拟器启动速度要快得多。 (见我的问题关于这个问题在这里https://*.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]; 

什么你正在寻找被称为“模拟对象”,往往是在测试驱动开发。基本上你所做的是创建一个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