我刚刚遇到一个崩溃NSInvalidArgumentException,在一个以前没有这样做的应用程序上显示此消息.
应用程序尝试以模态方式呈现活动控制器UITabBarController:0x83d7f00.
我有一个UITabBarController我在其中创建AppDelegate并给它的数组UIViewControllers.
其中一个我想在点击它时以模态方式呈现.我通过实现委托方法来做到这一点
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
Run Code Online (Sandbox Code Playgroud)
如果该视图控制器属于我想以模态方式呈现的类,我返回NO并执行
[tabBarController presentModalViewController:viewController animated:YES];
Run Code Online (Sandbox Code Playgroud)
现在我收到了这个错误,这似乎意味着你不能在模式上呈现一个在其他地方活动的视图控制器(在tabbar中......)我应该说我在XCode 4.2 Developer Preview 7上,所以这是iOS 5(我知道NDA,但我认为我没有提供任何禁止的细节).我目前没有XCode安装来测试这是否会崩溃编译iOS4 SDK,但我几乎完全确定它没有.
我只想询问是否有人遇到过此问题或有任何建议
这是场景:
我有一个公共的回购一个.Bob forks A,添加了一些提交Bob/master并提交了一个pull请求来合并这些更改A/master.我想在合并之前对提议的pull请求进行一些更改A/master.
如果我不能推动,我怎么能这样做Bob/master?
在iOS 7上有像UITableViews,UINavigationBars这样的元素具有不同的风格.
这种风格在运行时确定,因为这几类实现上UIKit,并UIKit与您在运行时动态,而不是在编译时静态链接的应用.
因此,人们可能会认为在iOS 7的任何应用程序的运行将有那些元素,看起来他们希望在iOS 7的方式.然而,他们继续他们曾经有过在iOS 6,直到你跟iOS 7 SDK编译相同的风格.除了其中一些(如UIAlertView或UIMenuController)
我对此的唯一解释是他们做了类似这样的事情:
#define SDKApplicationWasLinkedAgainst ...
if (SDKApplicationWasLinkedAgainst < 7.0)
...
else
...
Run Code Online (Sandbox Code Playgroud)
这显然非常麻烦,因为他们需要继续维护很多旧代码.所以我很好奇,这真的是引擎盖下的事情吗?我错过了什么?
我一直在使用Twitter测试应用程序的twitter API,我错过了用Charles(http://www.charlesproxy.com/)这样的软件代理我对twitter API的请求的能力.即使它具有SSL代理功能,Twitter似乎也不喜欢在签署请求的中间有不同的证书.有没有办法做到这一点?能够看到请求和Charles格式化JSON响应的方式等,我会非常有用......
有没有办法在Post Job脚本中获取Jenkins中执行(或传递)的测试数量(例如,将此数字发送到Github Status API)?
这样做的正确方法是什么?该NSTimer文件说,这样的:
特别注意事项
您必须从安装了计时器的线程发送此消息.如果从另一个线程发送此消息,则可能无法从其运行循环中删除与计时器关联的输入源,这可能会阻止线程正常退出.
既然GCD不能保证串行队列总是在同一个线程上运行块,那么确保NSTimer在同一个线程上调度和失效的正确方法是什么?
编辑:
根据以下答案的建议,我创建了MSWeakTimer(https://github.com/mindsnacks/MSWeakTimer),这是一个使用的自定义计时器实现GCD,可以在任何队列中使用.
objective-c core-foundation nstimer grand-central-dispatch ios
我们有一个使用AFHTTPClient和AFHTTPRequestOperation内部的类.在开发中,我们连接到具有无效SSL证书的服务器,因此我们在返回请求操作的方法中使用此代码:
if (self.allowInvalidSSLCertificates)
{
[operation setAuthenticationChallengeBlock:^(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge) {
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
[challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
}
}];
[operation setAuthenticationAgainstProtectionSpaceBlock:^BOOL(NSURLConnection *connection, NSURLProtectionSpace *protectionSpace) {
return YES;
}];
}
Run Code Online (Sandbox Code Playgroud)
这与定义有效_AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_,但我们需要在运行时执行此操作.这在Xcode上完美运行,忽略了无效证书,并且我们所有的功能测试都通过了.当我们使用命令行运行它们时会出现问题xcodebuild.一旦它将运行第一次测试,它就会崩溃:
Run test case <testMethodName>
Test Case '-[<TestCaseClass> <testMethodName>]' started.
/Applications/Xcode.app/Contents/Developer/Tools/RunPlatformUnitTests.include: line 415: 47744 Bus error: 10 "${THIN_TEST_RIG}" "${OTHER_TEST_FLAGS}" "${TEST_BUNDLE_PATH}"
/Applications/Xcode.app/Contents/Developer/Tools/RunPlatformUnitTests.include:451: error: Test rig '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/Developer/usr/bin/otest' exited abnormally with code 138 (it may have crashed).
如果我们删除该代码,并且不忽略SSL证书无效,则测试不会通过,因为连接失败,但没有任何崩溃.
这是Console中的崩溃日志:
Process: otest [35957]
Path: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/Developer/usr/bin/otest
Identifier: …Run Code Online (Sandbox Code Playgroud) ios ×4
objective-c ×2
afnetworking ×1
cocoa-touch ×1
git ×1
github ×1
ios5 ×1
ios7 ×1
iphone ×1
jenkins ×1
nstimer ×1
oauth ×1
proxy ×1
pull-request ×1
twitter ×1
xcode4 ×1
xcodebuild ×1