可以用我自己的方法来扩展UIAElementArray吗?
问题描述:
我做到以下几点:可以用我自己的方法来扩展UIAElementArray吗?
function extend(destination, source) {
for (var property in source) {
destination[property] = source[property];
}
return destination;
};
extend(UIAElementArray.prototype,
{
each: function(f)
{
for (i = 0; i < this.length; i++)
{
f(i, this[i]);
}
},
findFirst: function(f)
{
for (i = 0; i < this.length; i++)
{
if (f(this[i])) return this[i];
}
return null;
},
findLast: function(f)
{
for (i = this.length - 1; i >= 0; i--)
{
if (f(this[i])) return this[i];
}
return null;
}
});
但是当我尝试使用对象,这是我从mainWindow.tableViews(获得 “每个” 功能)[0] .cells(),“[对象UIAElementNil]不是一个功能“发生。如何将每个添加到UIAElementArray.prototype的属性设置为[object UIAElementNil]?这种事情发生时,当我在真实设备上运行UIAutomation测试时,在模拟器上它起作用,令人惊讶。
答
在Objective-C中,您可以扩展任何类并使用类别将自定义方法添加到它们。
答
绝对可以扩展UIAElementArray(不是,btw,objective-c)。 tuneup.js使用上面使用的相同方法并且工作正常,并且我使用了相同的方法来扩展UIAElementArray。我无法说出为什么你的脚本报告你正在击中UIAElementNil,但是你对UIAElementArray的扩展看起来是正确的。
这里真正的问题可能是“为什么在模拟器上工作,而不是设备?”。设备是否运行iOS 5或更高版本?我已经看到iOS 4.3设备可以正常工作(大部分情况下),而脚本记录或写入5,但我也看到更复杂的脚本在4.3设备上变得不稳定。
这个答案完全忽略了这一点。问题出在基于JavaScript的UIAutomation上。无论如何,与ObjectiveC没有任何关联。 – Till 2012-09-14 23:39:54