我在斯威夫特與NSMutableArray的自定義初始化斯威夫特
class CustomScrollView:UIScrollView,UIScrollViewDelegate {
private let unitLabelWidth:CGFloat = kScreenWidth/3
private let displayedUnits:NSMutableArray?
init(frame: CGRect,unitData:NSMutableArray,scrollType:Int) {
super.init(frame: frame)
unitData.addObject("")
unitData.addObject("")
self.pagingEnabled = false
self.delegate = self
self.scrollIdentifier = scrollType
self.displayedUnits = unitData
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
正如你可以看到如下的自定義scrollView init
「unitData
」是NSMutableArray
參數傳遞,我在我的自定義添加一些對象的數組init
。這是一個非常簡單的。
現在當我創建這個scrollView
類的對象時,我得到的輸出是我無法理解的。
看看下面的代碼
func unitCreation(){
let units:NSMutableArray = NSMutableArray(objects:"Unit1","Unit2")
let unitLabelWidth = kScreenWidth/3
let fromUnitScroll = CustomScrollView(frame: CGRectMake(0, 0, kScreenWidth, ScrollHeight),unitData: units,scrollType:1)
mainView?.addSubview(fromUnitScroll)
println(units)
let toUnitScroll = CustomScrollView(frame: CGRectMake(0, fromUnitScroll.frame.origin.y + ScrollHeight * 3, kScreenWidth, ScrollHeight),unitData: units,scrollType:2)
mainView?.addSubview(toUnitScroll)
}
我有稱爲「units
」與兩個對象「UNIT1
」和「UNIT2
」的陣列恆定。當我通過「units
」創建對象「fromUnitScroll
」時,通過的數據是["UNIT1","UNIT2"]
現在我正在打印「units
」。這是我看到奇怪結果的地方。我期待看到打印輸出爲["UNIT1","UNIT2"]
,與原始作業一樣,但我看到的是["UNIT1","UNIT2","",""]
。
添加到自定義init方法中的對象反映在println語句中。
我傳遞「units
」作爲參數傳遞給定製的init方法,我不能明白爲什麼加入對象init
方法體現在「unitCreation
」的方法
謝謝