MGTwitter发动机在iOS5中发生故障

MGTwitter发动机在iOS5中发生故障,ios5,exc-bad-access,mgtwitterengine,Ios5,Exc Bad Access,Mgtwitterengine,虽然MGTwitterEngine在以前版本的iOS上运行良好,但在我尝试发布twit时,由于EXC_BAD_访问失败: [twitter sendUpdate:textToShare]; Objective-C代码执行器的最后一个列表是: [theRequest prepare]; 内部SA_OAuthTwitterEngine.m。这是调用堆栈: #1 0x00045a63 in -[OAMutableURLRequest URLEncodedString:] at /Users/be

虽然MGTwitterEngine在以前版本的iOS上运行良好,但在我尝试发布twit时,由于EXC_BAD_访问失败:

[twitter sendUpdate:textToShare];
Objective-C代码执行器的最后一个列表是:

[theRequest prepare];
内部SA_OAuthTwitterEngine.m。这是调用堆栈:

#1  0x00045a63 in -[OAMutableURLRequest URLEncodedString:] at /Users/ben/Dropbox/Dev/External Projects/Twitter-OAuth-iPhone/OAuthConsumeriPhoneLib/OAuthConsumerSrc/OAMutableURLRequest.m:287
#2  0x000445fa in -[OAMutableURLRequest prepare] at /Users/ben/Dropbox/Dev/External Projects/Twitter-OAuth-iPhone/OAuthConsumeriPhoneLib/OAuthConsumerSrc/OAMutableURLRequest.m:131
#3  0x00041778 in -[SA_OAuthTwitterEngine _sendRequestWithMethod:path:queryParameters:body:requestType:responseType:] at /Developer/WorkShop/XDictionary/trunk/Dictionary/Twitter+OAuth/SAOAuthTwitterEngine/SA_OAuthTwitterEngine.m:325
#4  0x000356b1 in -[MGTwitterEngine sendUpdate:inReplyTo:] at /Developer/WorkShop/XDictionary/trunk/Dictionary/Twitter+OAuth/MGTwitterEngine/MGTwitterEngine.m:1037
#5  0x0003546c in -[MGTwitterEngine sendUpdate:] ()
#6  0x00023ae7 in -[SocialNetworking twitterShare] ()
#7  0x00023c2b in -[SocialNetworking OAuthTwitterController:authenticatedWithUsername:] ()
#8  0x0003d0d5 in -[SA_OAuthTwitterController gotPin:] ()
#9  0x0003eabb in -[SA_OAuthTwitterController webViewDidFinishLoad:] ()
#10 0x0051736a in -[UIWebView webView:didFinishLoadForFrame:] ()
#11 0x00518956 in -[UIWebViewWebViewDelegate webView:didFinishLoadForFrame:] ()
#12 0x01ced51d in __invoking___ ()
#13 0x01ced437 in -[NSInvocation invoke] ()
#14 0x01d1849a in -[NSInvocation invokeWithTarget:] ()
#15 0x04f09aff in -[_WebSafeForwarder forwardInvocation:] ()
#16 0x01cee0c9 in ___forwarding___ ()
#17 0x01cedce2 in __forwarding_prep_0___ ()
#18 0x01ced51d in __invoking___ ()
#19 0x01ced437 in -[NSInvocation invoke] ()
#20 0x05aa9ae3 in SendMessage(NSInvocation*) ()
#21 0x05aaa115 in HandleDelegateSource(void*) ()
#22 0x01d5b97f in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#23 0x01cbeb73 in __CFRunLoopDoSources0 ()
#24 0x01cbe454 in __CFRunLoopRun ()
#25 0x01cbddb4 in CFRunLoopRunSpecific ()
#26 0x01cbdccb in CFRunLoopRunInMode ()
#27 0x02ee1879 in GSEventRunModal ()
#28 0x02ee193e in GSEventRun ()
#29 0x00360a9b in UIApplicationMain ()
#30 0x00001d3a in main ()
有什么想法吗?解决办法? 你知道另一个适合iOS5的Twitter框架吗?我需要做的唯一一件事就是发布twits(当然可以先登录)

如上所述修改SA_OAuthTwitterEngine.m函数。
您基本上必须将oAuth URL更新为https。iOS5中的某些内容阻止它在生成设置中从http重定向到https

-all_load强制链接器从它看到的每个归档中加载所有对象文件,即使是那些没有Objective-C代码的文件-在Xcode 3.2及更高版本中提供了强制加载。它允许对归档加载进行更精细的控制。每个-force_load选项后面都必须有一个到归档文件的路径,该归档文件中的每个对象文件都将被加载

- (SA_OAuthTwitterEngine *) initOAuthWithDelegate: (NSObject *) delegate {
    if (self = (id) [super initWithDelegate: delegate]) {
        self.requestTokenURL = [NSURL URLWithString: @"https://twitter.com/oauth/request_token"];
        self.accessTokenURL = [NSURL URLWithString: @"https://twitter.com/oauth/access_token"];
        self.authorizeURL = [NSURL URLWithString: @"https://twitter.com/oauth/authorize"];
    }
    return self;
}