I've just stumbled across this today, and it's a biggy we shouldn't have overlooked when we merged the ARC stuff in. I seem to remember @craigotis mentioning it, so it's my bad for not raising it...
but the important code in +[QSObject cleanObjectDictionary] is commented out.
This means objects aren't ever going to get released (theoretically)
You can see the memory increase (well, the object increase) if you:
- Pause QS running in Xcode and type
print [(NSArray *)[objectDictionary allKeys] count] in the debugger
- Resume Xcode, and browse to
/usr/bin/ in QS (and/or any other place that makes lots of 'temporary' QSObjects)
- Maybe wait a little while for
cleanObjectDictionary to be called/any cleanup to be performed (it's called when the interface closes, no need to wait if you trust me :D)
- Pause Xcode again and run
print [(NSArray *)[objectDictionary allKeys] count]
- You'll see the number of objects being stored has gone up quite a bit.
cleanObjectDictionary was never the right way to go about this. But what it? :)
I've just stumbled across this today, and it's a biggy we shouldn't have overlooked when we merged the ARC stuff in. I seem to remember @craigotis mentioning it, so it's my bad for not raising it...
but the important code in
+[QSObject cleanObjectDictionary]is commented out.This means objects aren't ever going to get released (theoretically)
You can see the memory increase (well, the object increase) if you:
print [(NSArray *)[objectDictionary allKeys] count]in the debugger/usr/bin/in QS (and/or any other place that makes lots of 'temporary' QSObjects)cleanObjectDictionaryto be called/any cleanup to be performed (it's called when the interface closes, no need to wait if you trust me :D)print [(NSArray *)[objectDictionary allKeys] count]cleanObjectDictionarywas never the right way to go about this. But what it? :)