当加入带有国旗的字符串时,Swift`join`会挂起

Dai*_*wei 5 emoji swift

我在Swift 1.2中工作时发现了这一点.我把它报告为一个bug.但不知道为什么?

import UIKit

var str = " LHR ?? SFO "

([str] as NSArray).componentsJoinedByString("") // Will work
join("", [str]) // Hangs forever
Run Code Online (Sandbox Code Playgroud)

deo*_*hal 0

Apple 在 swift 2.0 中修复了这个问题,join并被另一种joinWithSeparator(separator: String) -> String与标志配合良好的方法所取代。

\n\n

这是代码片段。

\n\n
var str = " LHR \xe2\x9c\x88\xef\xb8\x8f SFO "\n\n([str] as NSArray).componentsJoinedByString("") // Will work\n\n[str].joinWithSeparator("")\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出

\n\n
 LHR \xe2\x9c\x88\xef\xb8\x8f SFO \n LHR \xe2\x9c\x88\xef\xb8\x8f SFO \n LHR \xe2\x9c\x88\xef\xb8\x8f SFO \n
Run Code Online (Sandbox Code Playgroud)\n