小编Lil*_*ard的帖子

如何在Vim中的另一列文本后粘贴一列文本?

我有两个完整的文本列,我想让它们并排.例如,我有

abc
def
ghi
Run Code Online (Sandbox Code Playgroud)

和

123
456
789
Run Code Online (Sandbox Code Playgroud)

而且我要

123 abc
456 def
789 ghi
Run Code Online (Sandbox Code Playgroud)

我所能找到的是如何将同一行粘贴到列中每行的末尾.我无法弄清楚如何在另一列的末尾粘贴多行文本块.

vim

66
推荐指数
5
解决办法
4万
查看次数

Objective-C - 动画后应用更改的CABasicAnimation?

我正在使用CABasicAnimation移动和调整图像视图的大小.我希望将图像视图添加到superview,动画,然后从superview中删除.

为了实现这一点,我正在监听我的委托调用CAAnimationGroup,并且一旦调用它,我就从superview中删除图像视图.

问题是有时图像在从超视图中移除之前在初始位置闪烁.什么是避免这种行为的最佳方法?

CAAnimationGroup *animGroup = [CAAnimationGroup animation];
    animGroup.animations = [NSArray arrayWithObjects:moveAnim, scaleAnim, opacityAnim, nil];
    animGroup.duration = .5;
    animGroup.delegate = self;
    [imageView.layer addAnimation:animGroup forKey:nil];
Run Code Online (Sandbox Code Playgroud)

core-animation objective-c

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

Stroustrup如何将非const引用作为临时引用?

在Stroustrup的C++编程语言书(第3版)中,在Numerics章节中,他展示了以下代码片段:

void f(valarray<double>& d)
{
    slice_array<double>& v_even = d[slice(0,d.size()/2,2)];
    slice_array<double>& v_odd = d[slice(1,d.size()/2,2)];

    v_odd *= v_even;
    v_even = 0;
}
Run Code Online (Sandbox Code Playgroud)

问题是,v_even并且v_odd是对临时工具的非常规引用,这是不允许的.并尝试编译它会发出错误:

error: non-const lvalue reference to type 'slice_array<double>' cannot bind to a temporary of type 'slice_array<double>'
    slice_array<double>& v_even = d[slice(0,d.size()/2,2)];
                         ^        ~~~~~~~~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

我查看了所有在线提供的勘误表,没有任何内容涉及这个基本问题.我错过了什么吗?自从这本书被印刷以来,这方面的语言是否发生了变化(不太可能,因为该书本身提到了反对非常规的临时书的规则)?这里发生了什么?


如果我修改函数以使用值而不是引用,例如slice_array<double> v_even = ...,那么这实际上是编译的.然而,事实证明我的本地C++头使拷贝构造函数公众,而斯特劳斯和各种在线引用(cppreference.com,cplusplus.com)要求的拷贝构造函数是私有的.我认为这意味着这个解决方案是不可移植的.Stroustrup明确列出了一个带有非引用变量的代码示例,并说这会产生错误.


C++ 98规范(PDF)声明slice_array<T>具有私有拷贝构造函数.到2005年(根据这个规范),并且可能作为C++ 03的一部分,这变成了一个公共拷贝构造函数.

c++ reference language-lawyer

28
推荐指数
1
解决办法
1284
查看次数

更改NSURL的计划

有没有一种简单的方法来改变一个方案NSURL?我确实意识到这NSURL是不可改变的.我的目标是在链接时将URL的方案更改为"https" Security.framework,如果框架未链接则将"http" 更改为"http".我知道如何检测框架是否链接.

如果URL没有参数(例如"?param1 = foo¶m2 = bar"),此代码可以很好地工作:

+(NSURL*)adjustURL:(NSURL*)inURL toSecureConnection:(BOOL)inUseSecure {
    if ( inUseSecure ) {
        return [[[NSURL alloc] initWithScheme:@"https" host:[inURL host] path:[inURL path]] autorelease];
    }
    else {
        return [[[NSURL alloc] initWithScheme:@"http" host:[inURL host] path:[inURL path]] autorelease];
    }    
}
Run Code Online (Sandbox Code Playgroud)

但是,如果URL确实有参数,请[inURL path]删除它们.

任何建议都不能自己解析URL字符串(我可以做但我想尝试不做)?我做了什么能够将http或https的URL传递给此方法.

ios

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

NSManagedObjectContext重置和回滚之间有什么区别?

文件说:

- (void)reset
Run Code Online (Sandbox Code Playgroud)

将接收器返回到其基本状态.

讨论

所有接收方的托管对象都被"遗忘".如果使用此方法,则应确保还丢弃对使用接收方获取的任何托管对象的引用,因为它们之后将无效.


- (void)rollback
Run Code Online (Sandbox Code Playgroud)

从撤消堆栈中删除所有内容,放弃所有插入和删除,并将更新的对象还原为其上次提交的值.

讨论

此方法不会从持久性存储库中重新获取数据.

似乎在我对我的上下文做了一些更改之后,调用这两个方法将完全相同:丢弃更改并将更新的对象恢复为其上次提交的值.那-reset实际上做了什么?

core-data objective-c nsmanagedobjectcontext

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

将NSDate从AVDateRangeMetadataGroup转换为CMTime

AVPlayer主要测量时间CMTime.但是,当使用AVPlayerItemMetadataCollector从HLS流收集日期范围元数据时,结果AVDateRangeMetadataGroups保持NSDates而不是CMTimes.

我的问题是我想向播放器添加一个边界时间观察器,所以我知道当播放头实际进入日期范围时,你只能添加一个边界时间观察者CMTime.AVPlayer并且AVPlayerItem可以寻找一个Date并且可以给我当前的回放头作为Date,但我没有看到任何方式将给定Date转换为CMTime我可以用来设置边界时间观察者.

从理论上讲,如果我知道EXT-X-PROGRAM-DATE-TIME标签说什么我可以CMTime自己计算偏移量,但我没有找到一种方法来检索它.

唯一的其他想法我是同时检索currentTime和currentDate从AVPlayerItem,然后计算相对之间的偏移currentDate和我的目标日期并应用到CMTime.但是这个解决方案的一个问题是currentDate,currentTime并不代表完全相同的时间.三角洲可能会非常小,但它不会为零(除非它rate本身为零).

avfoundation http-live-streaming avplayer

15
推荐指数
0
解决办法
161
查看次数

CoreText是否支持Small Caps?

CoreText是否有任何设施可用于选择字体的SmallCaps变体,或者如果字体没有该功能,则可以合成小型大写字母?我在CoreText文档中找不到任何关于小型大写的内容,尽管有处理字体变体/功能的工具.有人做过类似的事吗?

core-text ios

13
推荐指数
3
解决办法
2941
查看次数

在可变Cocoa对象上实现-hash的技术

-hash当一个可变对象存储在一个集合中时,它的文档说不能改变,类似地-isEqual:说,-hash对于相同的对象,值的文档必须相同.

鉴于此,是否有人对最佳实施方式有任何建议-hash,使其满足这两个条件但实际上是智能计算的(即不仅仅是返回0)?有谁知道框架提供的类的可变版本如何做到这一点?

最简单的事情当然是忘记第一个条件(关于它不会改变),并确保我不会在一个集合中偶然改变一个对象,但我想知道是否有任何更灵活的解决方案.

编辑:我想知道在我改变对象的内部状态时是否可以维护2个契约(其中相等的对象具有相等的哈希值,并且当对象在集合中时哈希值不会改变).我倾向于说"不",除非我做了一些愚蠢的事情,总是为哈希返回0,但这就是我问这个问题的原因.

hash cocoa cocoa-touch objective-c

12
推荐指数
1
解决办法
2226
查看次数

iso8601使用swift4解码日期json

所以,我的json中有iso8601日期,看起来像"2016-06-07T17:20:00.000 + 02:00"

有没有办法使用swift4解析这些iso8601日期?我错过了一些明显的东西吗

我尝试了以下,但只有来自jsonShipA的dateString"2016-06-07T17:20:00Z"是可解析的....

import Foundation

struct Spaceship : Codable {
    var name: String
    var createdAt: Date
}

let jsonShipA = """
{
    "name": "Skyhopper",
    "createdAt": "2016-06-07T17:20:00Z"
}
"""

let jsonShipB = """
{
    "name": "Skyhopper",
    "createdAt": "2016-06-07T17:20:00.000+02:00"
}
"""

let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601

let dataA = jsonShipA.data(using: .utf8)!
if let decodedShip = try? decoder.decode(Spaceship.self, from: dataA) {
    print("jsonShipA date = \(decodedShip.createdAt)")
} else {
    print("Failed to decode iso8601 date format from jsonShipA")
}

let dataB …
Run Code Online (Sandbox Code Playgroud)

swift swift4

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

在Obj-C 2.0中锁定合成原子@properties的细节

Obj-C 2.0中属性的文档说原子属性在内部使用锁,但它没有记录锁的具体内容.有没有人知道这是一个per-property锁,一个每个对象的锁与@synchronized(self)使用的隐式锁分开,还是等同于@synchronized(self)?

cocoa multithreading objective-c

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