[Rubycocoa-devel 893] Re: NSObject.alloc.init doesn't return NSObject sometimes

Back to archive index

Laurent Sansonetti lsans****@apple*****
Thu May 24 06:04:12 JST 2007


Should be fixed in r1771.

Laurent

On May 23, 2007, at 6:54 PM, Laurent Sansonetti wrote:

> Forgot what I said, I can reproduce it.
>
> Investigating now :-)
>
> Laurent
>
> On May 23, 2007, at 6:44 PM, Laurent Sansonetti wrote:
>
>> Hi Satoshi-san,
>>
>> I have problems reproducing the defect.
>>
>> Here is the code I used:
>>
>> <<<
>> require 'osx/cocoa'
>>
>> OSX.require_framework 'WebKit'
>>
>> include OSX
>>
>> 3000.times do |i|
>>  obj = NSObject.alloc.init
>>  if obj.class.name != 'OSX::NSObject'
>>    puts "Not NSObject at: #{i}"
>>    p obj
>>    return
>>  end
>>  view = WebView.alloc.initWithFrame(NSZeroRect)
>>  view.setPolicyDelegate(self)
>>  view.mainFrame.loadHTMLString_baseURL('<html></html>', nil)
>> end
>> puts 'No problem'
>>>>>
>>
>> It always prints "No problem" on 2 different environments (ppc and
>> i386). I also tried to increase 3000 by a bigger number, without
>> success.
>>
>> # I also try your AllocDefect projet, without success too :(
>>
>> Laurent
>>
>> On May 23, 2007, at 7:43 AM, Satoshi Nakagawa wrote:
>>
>>> Hi.
>>>
>>> I'm writing an application using WebKit. In the process I found a
>>> defect of RubyCocoa.
>>>
>>> The defect is that NSObject.alloc.init doesn't return NSObject
>>> sometimes. It is reproducible only when setting a ruby object for
>>> WebPolicyDelegate or WebUIDelegate. If I set an Objective-C object
>>> for WebPolicyDelegate, it works normally.
>>>
>>> In the following code, NSObject.alloc.init return
>>> OSX::WebPolicyDecisionListener or OSX::NSMutableURLRequest  
>>> sometimes.
>>>
>>> Environment: OSX 10.4 + ruby 1.8.2
>>> Reproducible versions: 0.10.1, 0.11.0
>>> NOT reproducible version: 0.5.0
>>>
>>> -------- Reproduce code
>>> class AppController < OSX::NSObject
>>> include OSX
>>>
>>> def
>>> webView_decidePolicyForNavigationAction_request_frame_decisionListener
>>> (sender, action, request, frame, listener)
>>>  listener.use
>>> end
>>>
>>> def awakeFromNib
>>>  puts '@@@ awakeFromNib'
>>>  3000.times do |i|
>>>    obj = NSObject.alloc.init
>>>    if obj.class.name != 'OSX::NSObject'
>>>      puts "Not NSObject at: #{i}"
>>>      p obj
>>>      return
>>>    end
>>>    view = WebView.alloc.initWithFrame(NSZeroRect)
>>>    view.setPolicyDelegate(self)
>>>    view.mainFrame.loadHTMLString_baseURL('<html></html>', nil)
>>>  end
>>> 	puts 'No problem'
>>> end
>>> end
>>> --------
>>>
>>> -------- Result 1
>>> @@@ awakeFromNib
>>> Not NSObject at: 104
>>> #<OSX::WebPolicyDecisionListener:0x159ed6 class='NSObject'
>>> id=0x500e20>
>>> --------
>>>
>>> -------- Result 2
>>> @@@ awakeFromNib
>>> Not NSObject at: 186
>>> #<OSX::NSMutableURLRequest:0x80d6f8 class='NSObject' id=0xd60bf60>
>>> --------
>>>
>>> The entire project contains the reproduce code:
>>> http://limechat.net/rubycocoa/AllocRuby.zip
>>>
>>> And another project using Objective-C delegate object (it works
>>> normally):
>>> http://limechat.net/rubycocoa/AllocObjc.zip
>>>
>>> --
>>> Satoshi Nakagawa
>>> http://limechat.net/
>>> http://www.lingr.com/
>>>
>>> _______________________________________________
>>> Rubycocoa-devel mailing list
>>> Rubyc****@lists*****
>>> http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel
>>
>> _______________________________________________
>> Rubycocoa-devel mailing list
>> Rubyc****@lists*****
>> http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel
>
> _______________________________________________
> Rubycocoa-devel mailing list
> Rubyc****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel




More information about the Rubycocoa-devel mailing list
Back to archive index