Monday 15 March 2010

initialization - Custom initialisation with NSMutableArray in Swift -



initialization - Custom initialisation with NSMutableArray in Swift -

i have custom scrollview init below in swift

class customscrollview:uiscrollview,uiscrollviewdelegate { private allow unitlabelwidth:cgfloat = kscreenwidth / 3 private allow 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") } }

as can see, "unitdata" nsmutablearray parameter passed , adding objects array in custom init. it's simple one.

now when creating objects of scrollview class, getting output not able comprehend.

take @ below code

func unitcreation(){ allow units:nsmutablearray = nsmutablearray(objects:"unit1","unit2") allow unitlabelwidth = kscreenwidth / 3 allow fromunitscroll = customscrollview(frame: cgrectmake(0, 0, kscreenwidth, scrollheight),unitdata: units,scrolltype:1) mainview?.addsubview(fromunitscroll) println(units) allow tounitscroll = customscrollview(frame: cgrectmake(0, fromunitscroll.frame.origin.y + scrollheight * 3, kscreenwidth, scrollheight),unitdata: units,scrolltype:2) mainview?.addsubview(tounitscroll) }

i have array constant called "units" 2 objects "unit1" , "unit2". when pass "units" create object "fromunitscroll",data passed ["unit1","unit2"]

now printing "units". here see weird result. expecting see printed output ["unit1","unit2"] in original assignment see ["unit1","unit2","",""].

objects added in custom init method reflected in println statement.

i passing "units" parameter custom init method , not able why add-on of objects init method reflected in "unitcreation" method

thank you

this because nsmutablearray class swift , such passed reference. modifications in init functions modify original array. using swift arrays, passed value, not observe this.

swift initialization

No comments:

Post a Comment