我有一个GUI可可应用程序,当计算机从睡眠中唤醒时自动启动.应用程序同时在多个用户帐户中运行,并且有时在用户帐户中启动,该用户帐户不是屏幕上显示的当前用户(即活动控制台用户).这就是出现问题的地方.
我有一个自定义视图,用于CALayer
显示几个不同图像的组合.NSView的CALayer包含两个子层,其中一个子层也包含两个子层.当用户在活动用户的帐户中启动应用程序时,没有问题.当应用程序由非活动用户帐户中的自动脚本启动时,自定义NSView不会绘制任何CALayer.我在应用程序中注入了F-Script而没有绘制CALayer,并注意到自定义NSView layer
不包含任何内容sublayers
!请注意,图层设置代码包含在-awakeFromNib
自定义NSView中.我尝试-awakeFromNib
在自定义NSView没有绘制时手动调用它并修复了问题(虽然它确实设置sublayers
正确).
我搜索网,发现该比特的信息:
在OS X v.10.4及更高版本中,如果用户使用快速用户切换,则会自动停止显示链接线程.切换回原始用户时重新启动显示链接.
我知道我的问题与没有引用活动屏幕的用户有关(一个'好的'CGContext引用?)但我没有收到任何错误消息,也没有Quartz/Core Animation经验指向我在正确的方向.
提前谢谢你的帮助!
我在运行linux的服务器上有一个包含Unicode字符的文件。如果我通过SSH进入服务器并使用制表符补全功能导航到包含Unicode字符的文件/文件夹,则可以轻松访问该文件/文件夹。当我尝试通过PHP访问文件时出现了问题(我从was访问文件系统的功能stat
)。如果我将PHP脚本生成的路径输出到浏览器并将其粘贴到终端,则该文件似乎也存在(即使在终端中,文件路径也完全相同)。
我通过php_ini以及set将PHP设置为使用UTF8作为其默认编码mb_internal_encoding
。我检查了PHP文件路径字符串编码,并按需要将其显示为UTF8。进一步研究一下,我决定hexdump
使用é字符来表示终端的制表符补全,并将其与hexdump
由PHP脚本或通过键盘手动输入的é字符(通过键盘上的option + e + e来创建)进行比较。 os x)。结果如下:
echo -né| 十六进制转储 0000000 cc65 0081 0000003 echo -né| 十六进制转储 0000000 a9c3 0000002
在终端中允许正确引用文件的é字符是3个字节。我不确定从这里开始,我应该在PHP中使用哪种编码?我应该通过iconv
或将路径转换为另一种编码mb_convert_encoding
吗?