Skip to content

Commit 5533545

Browse files
committed
performance
1 parent 8fa8944 commit 5533545

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

SwiftIO/SocketParser.swift

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,29 +22,33 @@
2222

2323
import Foundation
2424

25-
private let shredder = SocketParser.Deconstructor()
25+
private let shredder = SocketParser.PacketShredder()
2626

2727
class SocketParser {
2828
// Translation of socket.io-parser#deconstructPacket
29-
private class Deconstructor {
29+
private class PacketShredder {
3030
var buf = ContiguousArray<NSData>()
31-
32-
func ripAndTear(data:AnyObject) -> AnyObject {
31+
32+
func shred(data:AnyObject) -> AnyObject {
3333
if let bin = data as? NSData {
3434
let placeholder = ["_placeholder" :true, "num": buf.count]
3535

3636
buf.append(bin)
3737

3838
return placeholder
39-
} else if var arr = data as? [AnyObject] {
39+
} else if let arr = data as? NSArray {
40+
var newArr = NSMutableArray(array: arr)
41+
4042
for i in 0..<arr.count {
41-
arr[i] = ripAndTear(arr[i])
43+
newArr[i] = shred(arr[i])
4244
}
4345

44-
return arr
45-
} else if var newDict = data as? [String: AnyObject] {
46+
return newArr
47+
} else if let dict = data as? NSDictionary {
48+
var newDict = NSMutableDictionary(dictionary: dict)
49+
4650
for (key, value) in newDict {
47-
newDict[key] = ripAndTear(value)
51+
newDict[key as NSCopying] = shred(value)
4852
}
4953

5054
return newDict
@@ -62,7 +66,7 @@ class SocketParser {
6266

6367
for i in 0..<data.count {
6468
if data[i] is NSArray || data[i] is NSDictionary {
65-
data[i] = ripAndTear(data[i])
69+
data[i] = shred(data[i])
6670
} else if let bin = data[i] as? NSData {
6771
data[i] = ["_placeholder" :true, "num": buf.count]
6872
buf.append(bin)

0 commit comments

Comments
 (0)