• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Sending object between threads.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Sending object between threads.


  • Subject: Re: Sending object between threads.
  • From: Jorge Monteiro <email@hidden>
  • Date: Mon, 12 May 2003 21:46:50 -0400

Terry,

You need to implement the NSCopying and NSCoding protocols on all the objects you want to pass. This will work within the same app or across apps - using real DO.
Also remember if you pass the object pointer, like suggested before, you should use an NSLock to lock access to the object so that the 2 threads do not access the object at the same time - if that happens the app will crash and this problem will be very hard to track later on.

Regards,

Jorge Monteiro
http://www.jomosoft.com



On Thursday, January 23, 2003, at 05:23 AM, Terry Smyth wrote:

Thanks Nico & Jake,

That did the trick. By casting to a uintptr_t I can now see my object at the other end of the connection. Though I still don't understand why my objects are not getting encoded and transferred as I had expected (it seems at present just a pointer to the object is sent). This is fine for now while I am communicating between threads in the same app. Later, my worker thread will need to run on a separate machine, and I will need a full DO implementation - hopefully once I've done that, I will see my objects encoded and transferred across the connection.

Thanks for your help,

Terry

On Tuesday, January 21, 2003, at 08:12 pm, Nico wrote:

Hi Terry!

I also ran into this problem.
The simplest way to solve that problem is to pass your
object pointer castet to a uintptr_t.
After received by the worker thread simply cast the
pointer back.
Make sure the object is still valid for the worker.
Maybe you retain the object for the worker and the
worker releases it.

Hope that helps...
Nico

On Montag, Januar 20, 2003, at 07:05 Uhr, cocoa-dev-
email@hidden wrote:

Date: Mon, 20 Jan 2003 17:50:39 +0000
Subject: Sending object between threads.
From: Terry Smyth <email@hidden>
To: email@hidden

Hi,

Following the example given in the Cocoa documentation "Forming
Connections Between Threads", I have implemented a separate thread in
my app to do some stuff, using NSConnection/NSPort to communicate
between the main thread and the worker thread. It all works, except
that I'm having trouble passing my own custom objects to and from the
worker thread (so I can't actually get my worker to do any useful
work!!). I can pass other cocoa objects (eg NSString) just fine, and
they appear intact at the other side of the connection. If I pass my
own object, I just get junk at the other end.

Objects of my custom class conform to NSCoding, but my encodeWithCoder:
and initWithCoder: methods never get called. Have I missed something
obvious here, or is it more likely a dumb coding bug? I'm going round
in circles reading the documentation, but can't see what I'm doing
wrong. Can anyone suggest what I might have missed, or where I can go
for further reading (better still, is there any sample code which does
this - I couldn't find any?)
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.

  • Prev by Date: Re: adding images to dock menu...
  • Next by Date: How to change default browser in Mac OS X 10.2?
  • Previous by thread: Re: adding images to dock menu...
  • Next by thread: How to change default browser in Mac OS X 10.2?
  • Index(es):
    • Date
    • Thread