在iPhone上模拟发送短信

在iPhone上模拟发送短信,iphone,ios,sms,Iphone,Ios,Sms,由于在iOS 5.1上启动/安装应用程序时,使用Xcode 4.3进行调试的速度非常慢,因此我使用启动速度更快的模拟器。(见我在这里提出的关于这个问题的问题) 所以我需要做的就是这样: MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init]; picker.messageComposeDelegate = delegate; NSString *s = @"1234567"; p

由于在iOS 5.1上启动/安装应用程序时,使用Xcode 4.3进行调试的速度非常慢,因此我使用启动速度更快的模拟器。(见我在这里提出的关于这个问题的问题)

所以我需要做的就是这样:

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];
    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时。mock对象可能会存储结果和该方法已被激发的标志。请注意,这实际上不会发送任何内容,只会告诉您,在实际对象上激发的委托将起作用

如何创建一个“模拟对象”,在创建时生成非nil的内容?我定义了MFMessageComposeViewController的一个子类,并编写了MyMFMessageComposeViewController*myPicker=[[MyMFMessageComposeViewController alloc]init];-->myPicker还是零?谢谢隐马尔可夫模型。。。可能子类仍然是nil,因为它是某个在模拟器上不工作的东西的子类。尝试将其作为响应委托协议的nsobject的子类是-但它的结构与MFMessageComposeViewController不同,我无法将其强制为MFMessageComposeViewController,因此我无法调用[delegate messageComposeViewController:picker didFinishWithResult:result];--这就是我真正需要做的,你能做的最好的事情就是创建一个具有相同属性并响应委托方法的模拟对象。模拟器不显示MFMessageComposeViewController,因此模拟是您最好的选择,无需在设备上进行测试