小编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自己计算偏移量,但我没有找到一种方法来检索它.

唯一的其他想法我是同时检索currentTimecurrentDateAVPlayerItem,然后计算相对之间的偏移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
查看次数