Eu estava tendo um problema em que, de vez em quando, BubbleWrap :: HTTP falhava com a seguinte mensagem de erro:
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0xc07eac99
Aqui está um exemplo extremamente simplificado do código que eu estava usando:
api = Foo::Apps.new
api.list do |apps|
# Use apps result
end
module Foo
class Apps
# ...
def list(&block)
BW::HTTP.get('http://bar.com/apps') do |response|
if response.ok?
json = BW::JSON.parse(response.body.to_s)
block.call(json)
else
App.alert 'An error has occurred.'
end
end
end
# ...
end
end
O erro ocorreria na chamada BW :: HTTP.get () e, como se constatou, esse é um problema do próprio RubyMotion.
A solução é simples:
Converta os objetos atribuídos para @instance_variables da maneira que o RubyMotion funciona atualmente, você às vezes precisa fazer isso para reter os callbacks.
@api = Foo::Apps.new
@api.list do |apps|
# Use apps result
end