原文:http://www.idearadar.org/?p=71
NME’s Pitfalls and workarounds(1): Use SharedObject over ByteArray IO
在nme 3.4.3中,它的ByteArray IO与filesystem相关类在不同target中表现不同,如下段代码所示,你需要用条件编译来处理它:
loader.data.writeFile(“xlibrary.swf”);//on iphone, it writes to app Documents/assests folder
#if iphone
var swf = new SWF(ByteArray.readFile(File.documentsDirectory.nativePath + “/assets/xlibrary.swf”));
#elseif mac
var swf = new SWF(ByteArray.readFile(“xlibrary.swf”));
#end
这个也可从nme带的sample 14-WriteByteArrayToFile运行有问题中体现:
On Mac, it will throw “Critical Error: Null Object Reference” when you pass the file path with a folder inside (like writeFile(“DATA/README.txt”)).
On iOS6 simulator, it keeps throws the error.
避免上面陷阱的方法是使用sharedobject,主要原因有二点:
1、sharedobject是标准的flash api,nme的各个target应该最优支持,filesystem不是标准的flash api,只是部分target支持。
2、目前我们的测试显示sharedobject在flash\mac\ios\android等平台target上工作正常。