|
发表于 2007-5-26 13:29:36
|
显示全部楼层
不能,这个函数只是使条件脱离触发,而并不会删除它,要删除还是要用缓存的,但是这个并不会产生多少string泄露。
"TriggerCondition"只会产生1个string
I2S产生的字符串也是很有限的,并且I2S产生的字符串都是重复利用率很高的
只要注意尽量不要用I2S(h2i(xxx))+"xxx"这种格式,其它string泄漏都可以忽略
function f2 takes nothing returns boolean
local trigger trg = GetTriggeringTrigger()
call TriggerRemoveCondition(trg,i2tc(GetStoredInteger(udg_GC,I2S(h2i(trg)),"TriggerCondition")))
call DestroyTrigger(trg)
call FlushStoredMission(udg_GC,I2S(h2i(trg)))
set trg = null
return false
endfunction
function f1 takes nothing returns nothing
local integer t=h2i(CreateTrigger())
local integer c = h2i(TriggerAddCondition(t, Condition(function f2)))
call StoreInteger(udg_GC,I2S(t),"TriggerCondition",c)
endfunction |
|