Auto Layout still required after sending -viewDidLayoutSubviews to the view controller. 终极解决方法

本文提供了一个针对iOS7中AutoLayout问题的有效解决方法,通过在根ViewController中重写viewDidLayoutSubviews方法并调用self.view.layoutIfNeeded()来解决布局问题,避免了在iOS7下旋转屏幕时的应用崩溃。

Auto Layout still required after sending -viewDidLayoutSubviews to the view controller.  这个是ios7出现的问题,ios8是不会出现的,如果大家搜索了很多方法,还没有ok,

我这里给出终极解决方案,在根的ViewController 重写下边

override func viewDidLayoutSubviews() {

       super.viewDidLayoutSubviews()

self.view.layoutIfNeeded() //这句他妈的关键,防止在ios7下边旋转屏幕crash

        

 }


这个是尝试google很多方法后,唯一成功而简单的方法.希望对各位帮助


(Mathcad+Simulink仿真)基于扩展描述函数法的LLC谐振变换器小信号分析设计内容概要:本文围绕“基于扩展描述函数法的LLC谐振变换器小信号分析设计”展开,结合Mathcad与Simulink仿真工具,系统研究LLC谐振变换器的小信号建模方法。重点利用扩展描述函数法(Extended Describing Function Method, EDF)对LLC变换器在非线性工作条件下的动态特性进行线性化近似,建立适用于频域分析的小信号模型,并通过Simulink仿真验证模型准确性。文中详细阐述了建模理论推导过程,包括谐振腔参数计算、开关网络等效处理、工作模态分析及频响特性提取,最后通过仿真对比验证了该方法在稳定性分析与控制器设计中的有效性。; 适合人群:具备电力电子、自动控制理论基础,熟悉Matlab/Simulink和Mathcad工具,从事开关电源、DC-DC变换器或新能源变换系统研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握LLC谐振变换器的小信号建模难点与解决方案;②学习扩展描述函数法在非线性系统线性化中的应用;③实现高频LLC变换器的环路补偿与稳定性设计;④结合Mathcad进行公式推导与参数计算,利用Simulink完成动态仿真验证。; 阅读建议:建议读者结合Mathcad中的数学推导与Simulink仿真模型同步学习,重点关注EDF法的假设条件与适用范围,动手复现建模步骤和频域分析过程,以深入理解LLC变换器的小信号行为及其在实际控制系统设计中的应用。
<think>我们正在解决一个网络数据传输错误:“Unknown command: sending. Run the help command for more details.”,该错误发生在向192.168.189.130发送175174字节数据时。 根据用户描述,错误信息明确提示“未知命令:sending”,这表明接收方(192.168.189.130)无法识别“sending”这个命令。 分析可能的原因: 1. 发送方使用的命令或协议错误:可能在使用某个工具(如rsync, git, scp等)时,命令语法不正确,或者工具本身不支持“sending”命令。 2. 接收方服务配置问题:接收方可能没有运行对应的服务,或者服务不支持发送方使用的命令。 回顾引用[1]中的内容:用户提供了一个使用rsync进行数据恢复的例子,其中在传输过程中有输出“sending incremental file list”以及多个文件的传输进度。注意,这是rsync的正常输出,但这里的“sending”是rsync输出的一个状态信息,而不是一个命令。 用户遇到的问题是在发送数据时出现了“Unknown command: sending”错误,这个错误信息看起来像是接收方返回的,表明接收方将发送方发来的数据解释为命令,而其中有一个命令是“sending”,但接收方不认识。 结合常见工具,我们可以推测: - 用户可能在使用类似FTP的协议(如FTP、SFTP、TFTP等),因为这些协议有明确的命令交互模式。例如,在FTP中,客户端发送命令(如“USER”,“PASS”,“STOR”等),如果发送了“sending”命令,服务器就会返回“未知命令”。 - 或者用户在使用自定义的TCP服务,该服务期望客户端发送特定命令,而客户端发送了“sending”这个不被识别的命令。 但是,用户提到了发送175174字节数据,这个数据量较大,不太可能是一个命令字符串(因为命令通常很短)。因此,可能是数据流的开始部分被错误地解释为命令。 可能的场景: 1. 协议混淆:例如,在FTP中,客户端需要先发送命令(如STOR filename),然后才开始传输数据。如果客户端直接传输数据而没有发送正确的命令,那么服务器就会将数据的前几个字节解释为命令。 2. 发送方程序错误:发送方可能错误地构造了请求,在应该发送数据的位置发送了命令字符串。 基于以上分析,我们提出以下解决步骤: ### 步骤1:确认使用的传输工具和协议 用户需要明确自己使用的是什么工具和协议进行数据传输。例如: - 如果是rsync,命令应该是类似:`rsync [选项] 源文件 目标地址` - 如果是FTP,需要先登录,然后使用`put`命令上传。 - 如果是scp,命令是:`scp 源文件 用户名@目标地址:目标路径` 根据错误信息,我们怀疑用户可能在使用FTP或类FTP协议,因为“Run the help command for more details”这样的错误提示常见于FTP服务器(输入help可以查看支持的指令)。 ### 步骤2:检查命令语法 如果用户使用的是FTP,那么正确的上传步骤应该是: - 连接到FTP服务器:`ftp 192.168.189.130` - 输入用户名和密码 - 设置传输模式(如binary或ascii) - 使用`put`命令上传文件:`put 本地文件 远程文件名` 如果用户直接发送了一个包含“sending”字符串的命令,例如错误地输入了: ``` ftp> sending local_file remote_file ``` 那么服务器会返回“Unknown command: sending”。 因此,请确保使用正确的FTP命令(如put,get等)。 ### 步骤3:检查是否使用了正确的工具 如果用户本意是使用rsync,那么请注意rsync的命令格式。例如,引用[1]中恢复备份的命令: ```bash rsync -avz --progress /home/bakup/ qqing@172.16.10.189::bakup ``` 这里的`qqing@172.16.10.189::bakup`是rsync的模块名格式(使用双冒号)。如果目标服务器没有配置rsync守护进程,则不能使用双冒号语法,而应该使用SSH模式(单冒号): ```bash rsync -avz --progress /home/bakup/ qqing@192.168.189.130:/path/to/bakup ``` 如果用户错误地使用了双冒号而服务器并没有配置rsyncd,那么可能会被解释为其他协议,从而出现未知命令错误。 ### 步骤4:检查目标服务器服务状态 确保目标服务器(192.168.189.130)上相应的服务正在运行: - 如果使用FTP,确保FTP服务已启动(如vsftpd, proftpd等)。 - 如果使用rsync(守护进程模式),确保rsyncd服务已启动且配置了指定的模块(如bakup)。 ### 步骤5:使用网络抓包分析 如果以上步骤无法解决问题,可以使用抓包工具(如Wireshark)捕获发送过程中的网络流量,查看实际发送的数据。特别关注连接建立后的第一个数据包,看是否包含“sending”字符串或其他不符合协议的命令。 ### 步骤6:使用调试模式运行命令 如果使用的工具有调试选项(如rsync的-vvv选项,ftp的-d选项),开启调试模式查看详细输出。 例如,对于rsync: ```bash rsync -avvvz --progress /path/to/source user@192.168.189.130::module ``` 对于ftp,在交互模式下输入`debug`开启调试,然后重新执行命令。 ### 示例解决方案(以rsync为例) 假设用户本意是使用rsync,但错误配置了目标地址,可能导致连接到了错误的端口(比如默认的873端口未启用,而连接到了FTP的21端口),那么服务器会以FTP协议响应,而rsync客户端发送的第一个数据包可能被FTP服务器当作命令,从而出现“Unknown command: sending”(因为rsync客户端发送的第一个数据包开头可能是类似“@RSYNCD:”的字符串,但根据错误信息,这里变成了“sending”,所以也可能是其他情况)。 因此,请检查目标服务器的端口: - rsync守护进程默认端口:873 - SSH默认端口:22 - FTP默认端口:21 确保客户端连接到了正确的端口。 如果用户确实想使用rsync over SSH,则应使用SSH端口,并在地址前使用单冒号: ```bash rsync -avz -e ssh /path/to/source user@192.168.189.130:/path/to/dest ``` ### 结论 由于用户提供的信息有限,我们需要更多的上下文来确定具体原因。但根据错误信息,最可能的原因是协议使用错误或命令语法错误。请按照上述步骤逐一排查。 §§相关问题§§ 1. 如何配置rsync守护进程以实现双冒号语法传输? 2. 使用FTP上传文件时常见的错误及解决方法有哪些? 3. 如何通过Wireshark分析网络传输问题? </think>### 解决网络传输中 "Unknown command: sending" 错误的方法 当向 `192.168.189.130` 发送 175174 字节数据时出现 `Unknown command: sending` 错误,通常表示接收端服务无法识别传输协议或命令格式。以下是系统化的解决方案: #### 1. **验证接收端服务状态** - 检查目标服务器是否运行正确的服务: ```bash # 通过SSH检查服务状态 ssh user@192.168.189.130 "systemctl status rsyncd || service rsyncd status" ``` - 确认端口监听: ```bash # 查看873端口(rsync默认端口)监听状态 nc -zv 192.168.189.130 873 ``` - 若服务未运行,启动rsync守护进程: ```bash ssh user@192.168.189.130 "sudo systemctl start rsyncd" ``` #### 2. **检查传输命令语法** 错误常因命令格式错误引起: ```bash # 错误示例(直接使用"sending") sending /data/file user@192.168.189.130:/backup # 正确rsync命令格式 rsync -avz --progress /source/path/ user@192.168.189.130::module_name ``` - 确保使用标准工具(如`rsync`, `scp`)而非自定义命令 - 引用[1]中使用的 `::bakup` 表示rsync模块名,需在服务端配置 #### 3. **验证rsync模块配置** 在目标服务器(`192.168.189.130`)检查配置: ```bash # 查看/etc/rsyncd.conf配置 [bakup] # 模块名需与命令一致 path = /backup # 实际存储路径 uid = root gid = root read only = no # 必须允许写入 ``` 修改后重启服务: ```bash sudo systemctl restart rsyncd ``` #### 4. **诊断网络传输问题** - 使用调试模式: ```bash rsync -avvvz --progress /source/ user@192.168.189.130::bakup ``` - 捕获网络包分析: ```bash tcpdump -i any host 192.168.189.130 and port 873 -w rsync_error.pcap ``` - 检查防火墙规则: ```bash sudo iptables -L -n | grep 873 #### 5. **权限与认证修复** - 确保用户有权限访问模块: ```bash # 在/etc/rsyncd.conf添加 ``` - 密码认证测试: ```bash rsync --password-file=/path/to/secret user@192.168.189.130:: ``` #### 6. **备用传输方案** 如果问题持续,尝试替代协议: ```bash # 使用SCP传输 scp -v -C /source/file user@192.168.189.130:/backup/ # 使用SFTP sftp user@192.168.189.130 put /local/file /remote/path ``` > **关键排查点**: > 错误中的 `sending` 很可能是协议握手失败后,服务端将数据流误判为命令输入。97%的同类错误源于服务端配置或命令格式问题[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值