小编Tom*_*Tom的帖子

使用ARC将CFErrorRef转换为NSError(或相反)

我曾经像这样将NSError强制转换为CFErrorRef并在SMJobBless中使用它

NSError *error
BOOL removed = SMJobRemove(kSMDomainSystemLaunchd,
                               (CFStringRef) daemonBundleID,
                               auth,
                               true,
                               (CFErrorRef*) &error);
if (!removed) {
        NSLog(@"Failed to remove existing PacketTool");
        [NSApp presentError: error];
    }
Run Code Online (Sandbox Code Playgroud)

由于我在ARC中遇到错误,"ARC禁止使用指向'CFErrorRef'的Obj-C指针的间接指针",我改变并决定做相反的事情

CFErrorRef *cfError = nil;
BOOL blessed = SMJobBless(kSMDomainSystemLaunchd, (__bridge CFStringRef)daemonBundleID,
                          auth,
                          cfError);
if (!blessed) {
    NSError *error = (__bridge NSError *)cfError;
    NSLog(@"Failed to bless PacketTool: %@", error);
    [NSApp presentError: error];
    return FALSE;
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个"不兼容的类型转换'CFErrorRef'到NSError*"与__bridge强制转换

我能做什么?

更新:感谢Greg,正确的代码现在是:

CFErrorRef cfError = nil;
BOOL blessed = SMJobBless(kSMDomainSystemLaunchd,
                          (__bridge CFStringRef) daemonBundleID,
                          auth,
                          &cfError);
if (!blessed) {
    NSError *error …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c automatic-ref-counting

12
推荐指数
2
解决办法
5284
查看次数

逃避加号不起作用

我想删除所有带有3个加号的行:

+++ 3 plus signs
+ 1 plus sign
+++ 3 plus signs
Run Code Online (Sandbox Code Playgroud)

这是我的sed命令,在行开始后转义加号

sed '/^\+\+\+/d'    -> This erase all lines
sed '/^+++/d'       -> This works and show only the 1 plus sign line
Run Code Online (Sandbox Code Playgroud)

为什么?逃避加号时有什么问题吗?

regex sed

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

OS X严重的代码签名应用程序仍然没有警告启动

我的OS X应用程序已通过修改主可执行文件而被破解.它已使用有效的开发者ID进行签名.

在默认的OS X安装上启动此破解版本时,我期待一些警告,因为代码签名无效.我很惊讶它仍然没有任何问题与GateKeeper默认规则"App Store或仅验证开发"一起启动

为什么OS X仍然会启动这个无效的应用程序而没有任何警告,例如"此应用程序已损坏"?在我的代码签名中是否需要进行任何更改,以便用户在启动此破解时至少将GateKeeper规则更改为"Everywhere"?

$ spctl -a -t exec -vv CrackedApp.app/
CrackedApp.app/: invalid signature (code or signature have been modified)

$ codesign --verify --deep --verbose=4 CrackedApp.app/
CrackedApp.app/: invalid signature (code or signature have been modified)
In architecture: x86_64
Run Code Online (Sandbox Code Playgroud)

macos xcode code-signing

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

检测postgresql数据库中子网重叠的最佳方法

我有一个postgres数据库,有近200'000个网络地址类型.我想检测一些子网是否重叠,例如检测123.0.0.0/16,123.2.0.0/24和123.3.4.128/30并报告它们.

我已经使用了很多python脚本和netaddr库.

考虑到条目数量,检测重叠的最佳方法/算法是什么?

我很确定比将每个条目与整个数据库进行比较有更好的方法.

python postgresql ip-address

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