小编Amr*_*nes的帖子

当我在不使用performSegueWithIdentifier的情况下单击按钮时,不会调用prepareForSegue

基于斯坦福iOS课程,我正在使用模态视图控制器.在演示中,他们有一个按钮可以启动模态视图,当它被点击时,函数prepareForSegue被调用.我将代码和实现模仿到我的项目中,唯一的区别是我的演示是在iPhone故事板上,而他们的是在iPad上.

我注意到,当我的模态视图控制器出现时,它在此之前不会调用prepareForSegue.在查看prepareForSegue之前,我搜索了斯坦福项目,看看他们可以在哪里注册任何segue行为,但是没有证据.任何人都可以对此有所了解.我搜索了堆栈溢出,我发现所有用户都缺少performSegueWithIdentifier的调用实现.然而,在斯坦福大学的演示中他们从未这样做过.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier hasPrefix:@"Create Label"]) {
        AskerViewController *asker = (AskerViewController *)segue.destinationViewController;
        asker.question = @"What do you want your label to say?";
        asker.answer = @"Label Text";
        asker.delegate = self;
    }

}
Run Code Online (Sandbox Code Playgroud)

这是故事板的一个例子: 在此输入图像描述

这是我的故事板的一个例子: 在此输入图像描述

在调试器中,当我停在斯坦福演示代码中时,调用堆栈显示故事板正在执行segue操作,我需要在故事板中配置什么才能获得相同的结果? 在此输入图像描述

iphone objective-c ios segue uistoryboardsegue

26
推荐指数
4
解决办法
3万
查看次数

在SSL_write()期间,OpenSSL SSL_ERROR_WANT_WRITE永远不会恢复

我有两个应用程序通过SSL互相交谈.客户端在Windows机器上运行,服务器是基于linux的应用程序.客户端在启动时向服务器发送大量数据.数据以~4000byte块的形式发送到包含30个条目的服务器.我必须发送大约50000个条目.

在该传输期间,服务器向客户端发送消息,消息大小为~4000bytes.发生这种情况后,客户端的SSL_write()开始返回SSL_ERROR_WANT_WRITE的错误.客户端休眠10ms,并使用完全相同的参数重试SSL_write,但SSL_write无限失败.随后它中止了.如果它尝试发送新消息,我会收到一个错误,指示我没有从之前发送相同的中止消息.

错误:1409F07F:SSL例程:SSL3_WRITE_PENDING:写入重试次数错误"

服务器最终会终止连接,因为它没有从客户端听到60秒并重新建立新连接.这只是一个FYI,真正的问题是我如何才能恢复SSL_write.

如果服务器在接收期间没有发送请求,则问题就会消失.如果我将请求的大小从16K缩小到100字节,则问题不会发生.

SSL CTX MODE设置为SSL_MODE_AUTO_RETRY和SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER.

有没有人知道什么可能导致双方同时传输大量信息可能导致此失败.如果这是一个限制,除了限制从服务器发送到客户端的大小,我该怎么做才能防止它.我担心的是,如果客户没有发送任何我申请的限制,以避免这个问题是一种浪费.

在客户端,我尝试执行SSL_read以查看在写入期间是否需要读取,即使我从未收到过SSL_ERROR_PENDING_READ,但缓冲区也不是那么大.~1000字节大小.

任何有关这方面的见解将不胜感激.

ssl openssl client-server

2
推荐指数
1
解决办法
3051
查看次数

Windows驱动程序时间戳功能

我正在修改现有的Windows内核设备驱动程序,在那里我需要捕获时间戳.我打算使用time.h库并调用clock()函数来获取它,但是在windows visual studio下,链接失败了.所以我把它作为一种手段,我需要在驱动程序库中工作.

我发现了以下函数,KeInitializeTimer和KeSetTimerEx,但如果我打算设置一个计时器并在其上唤醒,则会使用这些函数.我真正需要的是能给我一个时间戳的东西.

有任何想法吗?

c windows kernel driver device-driver

1
推荐指数
1
解决办法
3710
查看次数

尽管升级到Python 2.7,Python仍然使用TLSv1或TLSv1.1请求库

我想确保在使用请求库发布到HTTP服务器时,它会拒绝使用TLSv1或TLSv1.1进行通信.为此,我配置了我的https服务器以强制SSL协议使用TLSv1或TLSv1.1.我希望这些版本被拒绝.

我的python程序在CentOs机器上运行:

cat /etc/centos-release
CentOS release 6.7 (Final)
Run Code Online (Sandbox Code Playgroud)

默认的Python版本是2.6.6:

which python
/usr/bin/python
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
Run Code Online (Sandbox Code Playgroud)

我安装了python 2.7:

which python2.7
/usr/local/bin/python2.7
Python 2.7.6 (default, Jun  2 2017, 11:37:31) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux2
>>> import ssl
>>> ssl.OPENSSL_VERSION
'OpenSSL 1.0.1e-fips 11 Feb 2013'

openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
Run Code Online (Sandbox Code Playgroud)

使用pip2.7,我安装了所需的库以获取运行请求.我没有对openssl做任何改动.

我发送了两个测试警报,似乎我的程序协商到TLSv1.我的印象是TLSv1已被弃用.该程序使用python 2.7执行,而不是python 2.6的系统默认值.

在我嵌入的python程序的顶部:#!/ usr/local/bin/python2.7

以下是显示TLSv1.1和TLSv1的2个帖子警报:

"POST /testpost HTTP/1.1" 200 43 TLSv1.1/ECDHE-RSA-AES256-SHA "-" "python-requests/2.5.1 CPython/2.6.6 …
Run Code Online (Sandbox Code Playgroud)

python pyopenssl python-requests tls1.2

0
推荐指数
1
解决办法
4534
查看次数