小编Eph*_*era的帖子

删除SVG文件中的转换

我一直在努力解决这个问题,似乎无法在任何地方找到答案(有效).我有一个SVG文件,如下所示:

<svg

   xmlns:dc="http://purl.org/dc/elements/1.1/"
   ...
   width="72.9375"
   height="58.21875"
   ...>
   ...
   <g
     ...
     transform="translate(10.75,-308.96875)"
     style="...">
     <path
       inkscape:connector-curvature="0"
       d="m -10.254587,345.43597 c 0,-1.41732 0.17692,-2.85384 0.5312502,-3.5625 0.70866,-1.41733 2.14518,-2.82259 3.5625,-3.53125 1.41733,-0.70866 2.11392,-0.70867 3.53125,0 1.41732,0.70866 ... z"
       ... />
  </g>
</svg>
Run Code Online (Sandbox Code Playgroud)

我想删除该transform="..."行,但仍然将我的图像保留在我放置的位置(在InkScape中).如果我手动删除变换,图像会拉到屏幕的另一部分(正如预期的那样),但我需要完全摆脱变换,同时让图像保持在我想要的位置.有没有办法将变换移除/压平到路径坐标本身?(我必须处理的唯一变换是平移和缩放,没有矩阵.)

svg transform inkscape

141
推荐指数
15
解决办法
6万
查看次数

使用dispatch_async与self

在将Objective-C代码移植到Swift时,我遇到过几次这个问题.说我有以下代码:

dispatch_async(dispatch_get_main_queue()) {
    self.hostViewController?.view.addSubview(self.commandField)
}
Run Code Online (Sandbox Code Playgroud)

这将导致错误,强调整个dispatch_async通话,提供:

Could not find member 'addSubview'
Run Code Online (Sandbox Code Playgroud)

我认为这是一个尚未正确实现的错误,因为如果我将addSubview调用放在dispatch_async块外,项目构建正常.最初我认为它可能与self块中的捕获有关.但是,插入[unowned self] in结果会产生相同的错误[weak self] in(在!插入适当的展开操作符之后).

如何dispatch_async在Swift中获取需要捕获的块self

grand-central-dispatch swift

42
推荐指数
2
解决办法
4万
查看次数

XCTAssertEqual错误:("3")不等于("3")

NSMutableArray *arr = [NSMutableArray array];
[arr addObject:@"1"];
[arr addObject:@"2"];
[arr addObject:@"3"];

// This statement is fine.
XCTAssertTrue(arr.count == 3, @"Wrong array size.");

// This assertion fails with an error: ((arr.count) equal to (3)) failed: ("3") is not equal to ("3")
XCTAssertEqual(arr.count, 3, @"Wrong array size.");
Run Code Online (Sandbox Code Playgroud)

我对XCTAssertEqual不了解什么?为什么最后一个断言失败了?

objective-c ocunit xctest

37
推荐指数
2
解决办法
2万
查看次数

.wav文件中的字节代表什么?

当我将.wav文件中的数据存储到字节数组中时,这些值意味着什么?我已经读过它们是双字节表示,但是这些双字节值究竟包含了什么?

audio wav

35
推荐指数
6
解决办法
3万
查看次数

将具有length的UnsafePointer转换为Swift Array类型

我正在寻找在Swift中实现合理的C互操作性的最简单方法,而我当前的块正在将UnsafePointer<Int8>(它是a const char *)转换为[Int8]数组.

目前,我有一个天真的算法,可以采用一个UnsafePointer和多个字节,并逐个元素地将其转换为数组:

func convert(length: Int, data: UnsafePointer<Int8>) {

    let buffer = UnsafeBufferPointer(start: data, count: length);
    var arr: [Int8] = [Int8]()
    for (var i = 0; i < length; i++) {
        arr.append(buffer[i])
    }
}
Run Code Online (Sandbox Code Playgroud)

循环本身可以通过使用来加速arr.reserveCapacity(length),但这不会消除循环本身的问题.

我知道这个SO问题涵盖了如何转换UnsafePointer<Int8>String,但String完全是一个不同的野兽[T].是否有一种方便的Swift方式将长度字节从一个复制UnsafePointer<T>到一个[T]?我更喜欢纯粹的Swift方法,而不是通过NSData或类似的.如果上述算法真的是唯一的方法,我很乐意坚持下去.

c arrays unsafe-pointers swift

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

Swift中的免费桥接和指针访问

我正在将一个App从Objective-C移植到Swift,我需要使用以下方法:

CFStreamCreatePairWithSocketToHost(alloc: CFAllocator!, host: CFString!, port: UInt32, \
readStream: CMutablePointer<Unmanaged<CFReadStream>?>, \
writeStream: CMutablePointer<Unmanaged<CFWriteStream>?>)
Run Code Online (Sandbox Code Playgroud)

旧的逻辑看起来像这样(几个网站似乎都同意):

CFReadStreamRef readStream = NULL;
CFWriteStreamRef writeStream = NULL;
CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)(host), port, \
                                   &readStream, &writeStream);

NSInputStream inputStream = (__bridge_transfer NSInputStream *)readStream;
NSOutputStream outputStream = (__bridge_transfer NSOutputStream *)writeStream;
Run Code Online (Sandbox Code Playgroud)

由于免费桥接,这很好用.但是,ARC在"Swift-space"中不存在,并且类型系统已经改变.

如何将我的流变成实例

CMutablePointer<Unmanaged<CFReadStream>?>, and
CMutablePointer<Unmanaged<CFWriteStream>?>
Run Code Online (Sandbox Code Playgroud)

然后NSStreamCFStreamCreatePairWithSocketToHost调用之后将它们转换回子类?

objective-c core-foundation toll-free-bridging swift

23
推荐指数
2
解决办法
9617
查看次数

添加二进制数

有谁知道如何在Java中添加2个二进制数,以二进制形式输入?

例如,1010 + 10 = 1100.

java binary decimal addition

16
推荐指数
5
解决办法
7万
查看次数

调整MFC中的控件大小

我正在编写一个有两个窗格(via CSplitter)的程序,但是我在解决每个帧中的控件大小时遇到​​了问题.为简单起见,有人可以告诉我如何使用单一CEdit控件对基本框架进行操作吗?

我很确定它与这个CEdit::OnSize()功能有关......但我真的没有到达任何地方......

谢谢!:)

c++ mfc

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

LLVM和编译器命名法

我正在研究LLVM系统,我已经阅读了入门文档.然而,一些命名法(以及铿锵例中的措辞)仍然有点令人困惑.以下术语和命令都是编译过程的一部分,我想知道是否有人能够更好地解释它们对我来说:

  • clang -Svs. clang -c(我知道是什么-c,但结果如何不同?)*(编辑)
  • LLVM Bitcode与LLVM IR(有什么区别?)
  • .ll文件与.bc文件(它们是什么,它们有什么不同?)
  • LLVM汇编代码本机汇编代码(有区别吗?)

在一个较高的水平,我了解整个编译过程,并且可以通过跟踪我的路还算好,我只是陷在一些点在哪里,例如,我期待看到"IR",而是看"位码"或" LLVM汇编"这让我认为我不理解它们几乎和我应该的一样!

assembly compilation llvm clang llvm-ir

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

使用NSOutputStream通过套接字发送数据的正确方法

我刚刚开始使用iOS上的套接字编程,我正在努力确定NSStreamEventHasSpaceAvailable事件的使用NSOutputStreams.

一方面,Apple的官方文档(清单2)显示,在-stream:handleEvent:委托方法中,应该使用-write:maxLength:消息将数据写入输出缓冲区,并在NSStreamEventHasSpaceAvailable收到事件时不断地从缓冲区传递数据.

另一方面,Ray Wenderlich的这个教程GitHub上的这个iOS TCP套接字示例NSStreamEventHasSpaceAvailable完全忽略了这个事件,-write:maxLength:只要他们需要(甚至忽略-hasSpaceAvailable)就可以继续前进到缓冲区.

第三,这个示例代码似乎同时做到 ......

因此,我的问题是,处理将数据写入NSOutputStream附加到套接字的正确方法是什么?NSStreamEventHasSpaceAvailable如果事件代码可以(显然)被忽略,它的用途是什么?在我看来,有非常幸运的UB发生(在示例2和3中),或者有几种方式通过基于套接字的方式发送数据NSOutputStream...

sockets cocoa-touch ios

10
推荐指数
2
解决办法
7580
查看次数