小编Guy*_*zmo的帖子

是否有人反过来设计Apple的iOS Remote应用程序用于控制Apple TV over IP的协议?

我很好奇我是否可以编写可以控制Apple TV的程序,特别是运行tvOS 9.1.1的Apple TV第四代,就像Apple的iOS远程应用程序一样.我想发送命令,用于在四个主要方向导航,在屏幕上选择一个项目,向上导航堆栈 - 基本上是Apple的远程应用程序可以执行的操作.

有没有人对它使用的协议进行逆向工程?到目前为止,Cursory谷歌搜索已经产生了关于早期Apple TV和DAAP协议的过时结果,这些协议看起来与我想要的不同.

reverse-engineering remote-control apple-tv tvos

14
推荐指数
2
解决办法
8561
查看次数

以编程方式"拔出并重新插入"USB设备以在OS X中加载新驱动程序?

我正在OS X中安装一个安装程序,为USB设备安装一个IOKit驱动程序,我试图让它不需要在最后重启.安装程序正确安装驱动程序并重建kext缓存,运行后,如果我拔下并重新插入USB设备,它会正确加载新驱动程序,一切正常.

但是,我不希望要求用户物理拔出设备以便加载新驱动程序.必须有一种方法让OS X以编程方式加载新驱动程序 - 实际上模拟设备被拔出并重新插入或类似的东西.我该怎么做呢?到目前为止,几个小时的谷歌搜索没有任何结果,所以任何帮助将不胜感激!

macos usb installer driver iokit

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

如何禁用整个iPhone应用程序主视图的圆角?

在运行我的iPhone应用程序时,应用程序的整个UI都有圆角(即状态栏下方的区域).使用故事板设置UI,该故事板不显示圆角.如何关闭圆角?我在我的AppDelegate's didFinishLoading方法中尝试了以下内容:

[self.window.layer setCornerRadius:0.0];
Run Code Online (Sandbox Code Playgroud)

但它没有任何区别.有任何想法吗?

iphone ios

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

阻止jshint报告变量未用于特定局部变量?

在我的几个javascript文件上运行jshint时,我收到如下警告:

file.js: line X, col 93, 'fromParams' is defined but never used.
file.js: line X, col 72, 'toParams' is defined but never used.
file.js: line X, col 63, 'toState' is defined but never used.
file.js: line X, col 56, 'event' is defined but never used.
Run Code Online (Sandbox Code Playgroud)

对于这样的事情:

$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {
    // ... some code that doesn't use event, toState, toParams, or fromParams...
});
Run Code Online (Sandbox Code Playgroud)

这经常出现在一种或另一种回调中 - 回调函数需要一定数量的参数,但我在函数中的代码并没有使用所有参数,所以jshint抱怨它们.但参数需要在那里!

应该有一些方法可以在代码的某些部分禁用此警告,如下所示:

/*jshint -W098 */
$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) { …
Run Code Online (Sandbox Code Playgroud)

javascript jshint

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

是否可以构建一个同时适用于 Python 2 和 3 的 shebang?

我需要编写一个与 Python 2 和 Python 3 兼容的 Python 脚本,可以直接从 shell 调用(意味着它有一个 shebang),并且可以在安装了任一 Python 版本(但可能不能同时安装)的系统上运行。

通常我可以为 Python 2 编写一个 shebang,如下所示:

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

对于 Python 3:

#!/usr/bin/env python3
Run Code Online (Sandbox Code Playgroud)

但如果未安装相应的 Python 版本,这两种方法都会失败,因为据我所知,具有 Python 3 但不具有 Python 2 的系统不会别名或符号链接pythonpython3. (如果我错了,请纠正我。)

那么有没有一种方法可以使用 shebang 编写 Python 脚本,只要安装了其中一个,就可以使用 Python 2 或 Python 3 执行脚本?

这主要是为了解决从即将发布的 macOS 版本中删除 Python 2 的问题, (注:我最初是在错误的理解下写的,认为 Python 2 将在 macOS 中被 Python 3 取代,但实际上 Apple 正在完全删除 Python。)但也适用于 Linux。

python shell shebang python-3.x

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

试图同时动画两个UIViews,只有一个移动

我正在尝试在我的iOS应用程序中创建一个动画,其中新视图从左侧滑动到屏幕上,而主视图向右滑动以为其腾出空间.主视图是我的视图控制器顶视图的子视图,滑动的侧视图是从单独的xib文件加载的.

如果它是相关的,这是我的加载侧视图的代码,从我的主视图控制器的viewDidLoad方法调用:

sideViewController = [[SideViewController alloc] init];
[sideViewController loadView];

sideView = sideViewController.topView;
[self.view addSubview:sideView];
sideView.hidden = YES;
sideView.frame = CGRectMake(-200, 0, 200, 460);
Run Code Online (Sandbox Code Playgroud)

这是调用两个视图动画的代码:

sideView.hidden = NO;
[UIView animateWithDuration:0.25f
                 animations:^{                         
                     mainView.frame = CGRectMake(200, 0, 320, 460);
                     sideView.frame = CGRectMake(0, 0, 200, 460);
                 }];
Run Code Online (Sandbox Code Playgroud)

这看起来很简单.但由于某种原因,只有sideView动画 - mainView不会移动到任何地方.而且为了让事情更加混乱,如果我在移动sideView的动画块中注释掉那一行,那么mainView的动画就会开始工作.

有谁知道什么是错的?从我读过的所有搜索和文档中,我正在做的事情应该正常工作.我认为这将是一个简单的动画已经变成了几个小时的挫折.任何帮助将非常感激!

编辑:

关于郭禄川的建议,我尝试动画两个UIViews的不同属性.大多数都得到了相同的结果,尽管它们的变换属性的动画几乎都有效.在这种情况下,两个UIViews都是动画的,但是mainView只做了错误的事情:它的动画以不同的位置开始,并以错误的位置结束.看起来它正在执行我指示它做的翻译,但是从矢量计算中表示的这个位置开始:

starting_point - 0.5 * total_translation
Run Code Online (Sandbox Code Playgroud)

意思是它结束于:

starting_point + 0.5 * total_translation
Run Code Online (Sandbox Code Playgroud)

然而,sideView正确地动画.

这太可恶了.我没有意识到以这种方式在iOS上执行动画是如此破碎.我要尝试的下一件事是使用CABasicAnimation,虽然我不高兴我不得不尝试这么简单的低级API.

iphone uiview uiviewanimation ios

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

检测Apple TV第4代何时从睡眠中醒来

我正在研究一些家庭自动化程序,我希望能够做的事情之一是检测我的第四代Apple TV是否已经从睡眠中醒来.当有人按下Siri遥控器上的按钮将其唤醒时,通常只会发生这种情况.

我有一台PC(连接到与Apple TV相同的电视机),它有一个Pulse-Eight USB-CEC适配器,所以我尝试的第一件事就是使用CEC确定Apple TV何时清醒.不幸的是,它不可靠,因为监视Apple TV的电源状态以查看它何时唤醒会产生误报.(我应该注意,我没有在Apple TV上启用"控制电视和接收器",并且无法为我正在处理的特定项目打开它,因为我需要Apple TV才能更改电视的输入. )

我正在考虑其他一些方法来做到这一点.我对任何可能性持开放态度,包括:

  • 在Apple TV上使用私有API
  • 在Apple TV的背景中运行"始终开启"程序,当Apple TV唤醒时发送信号,如果可能的话.(我怀疑它不是.)
  • 监控Siri Remote和Apple TV之间的蓝牙通信,如果可能的话
  • 以某种方式过滤HDMI-CEC命令,以便我可以打开"控制电视和接收器",允许Apple TV的CEC命令打开和关闭电视,并排除更改电视输入的命令.
  • 任何其他方法,无论多么黑巧或荒谬,只要它有效!

有没有人有什么建议?我已经没事了!

bluetooth home-automation hdmi apple-tv tvos

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

在分析从Swift编译的二进制文件时,是否有可能找出没有符号的函数的Swift方法名?

我是新手拆解和逆向工程二进制文件,所以请原谅我这个问题是荒谬的还是不可能的.

过去当我尝试逆向工程macOS二进制文件时,分析用Objective-C编写的文件会产生很多有用的信息,因为通常所有的Objective-C类及其方法名都很容易检索,这使得它变得容易多了找出任何特定方法的作用.

我正在尝试分析用Swift编写的二进制文件(技术上是Swift和Objective-C的组合),现在大多数函数都没有符号.我可以像往常一样检索一些Objective-C方法,以及一些具有Swift风格的错位名称的函数,但几乎所有其他函数都没有符号.我知道很多都必须是Swift方法.

无论如何都要弄清楚这个二进制文件的Swift类是什么以及它们与Objective-C一样的相关方法?

使用像Hopper Disassembler这样的工具可以显示一些Swift类的名称(通常是符号_TtC4Something25SomethingElse),我可以得到它的实例变量名称及其偏移量的列表,但没有方法名称.

注意:有问题的二进制文件是x64 macOS二进制文件,而不是iOS二进制文件.

reverse-engineering objective-c disassembly swift

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

将包含 32 位值的 uint64_t 传递给参数实际上是 uint32_t 的外部函数是否安全?

我正在开发一个跨平台程序,该程序通过 C 链接调用动态库中的函数。我需要支持这个动态库的多个版本,但是在我需要支持的两个版本之间,有一个函数参数从uint32_t变为uint64_t

如果我传递此函数 a uint64_t,其中包含仍可表示为 uint32_t 的值,那么即使该函数的参数实际上是 a ,这样做是否安全uint32_t

更具体地说:

如果编译到动态库中的函数源是:

extern "C" void foo(uint32_t param) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我这样使用该函数是否安全:

extern "C" void foo(uint64_t);

uint32_t value32 = 10; // Ensure value can be represented by uint32_t
uint64_t value64 = value32;
foo(value64);
Run Code Online (Sandbox Code Playgroud)

如果是,跨不同平台执行此操作是否安全?我的这个程序支持32位和64位Windows(两者都编译为x86)、x86_64 macOS、arm64 macOS、x86 Linux和x86_64 Linux。

c++ parameter-passing dynamic-library

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

为什么 std::remove、std::remove_if 与容器有“擦除-删除习惯用法”?

我只是在研究为什么该函数std::remove_if没有按我预期的方式工作,并了解了 C++“擦除删除习惯用法”,我应该将结果传递给removeorremove_iferase实际从容器中删除我想要的项目。

这让我觉得非常不直观:这意味着remove不要remove_if按照他们所说的去做。它还会导致代码更加冗长、不太清晰。

这有道理吗?我认为存在某种权衡,其优点可以平衡我在上一段中列出的缺点。

我的第一个想法是,有一些使用removeremove_if单独使用的用例,但由于它们将集合中的其余项目留在未定义的状态,我想不出任何可能的用例。

c++ stl

6
推荐指数
2
解决办法
414
查看次数