Notification of CD-ROM inserted
Hi there, I want my application to be notified when a CD-ROM is inserted. I came with two solutions: watching /etc/fstab (but the os doesn't use it) and watching the /Volumes/ directory. What can you advice me?? Thanks! ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: forcing accessibility focus
On Nov 12, 2010, at 3:15 PM, Kenny Leung wrote: Hi All. I'm working on accessibility in an app, and would like to have a view pop up on screen and immediately become the focused item so that its text will be spoken. There seems to be no call to becomeAccessibilityFocus like there is becomeFirstResponder. The first thing I'd have to ask is: Why are you trying to force the voiceover user to hear this message as soon as it comes up? Is it somet hing warning of computer failure? Is it critical information that if they don't get it will cause loads of things to break? If not, then you shouldn't be trying to force the user to hear it regardless of how important *you* think it is. The voiceover user has a lot to deal with, and one thing that will irritate vo users to no end (me included) is when applications hijack my workflow, and force me to do something ZI had no interest in doing. Vo already gets a notification when you pop-up a window, just make it an alert, and let the voiceover user go to the warning when they get around to it. When leopard came out, the default behavior of voiceover was to automatically move to a newly loaded web page. Now, imagine ifyou will, you press a link to load a new page, and since it's taking a while to load, you switch over to mail, and are happily typing a response to a message, and poof, you're back in safari with no indication you were yanked out of mail, and no explanation of how you got there. Thankfully, this is no longer the default, though it can be set in preferences for folks who like that sort of thing. I absolutely hated this behavior, and until I got the ability to turn it off, I was just about ready to throw my copy of leopard out the window, go back to tiger, and just ignore any future updates. Don't introduce behavior into your application that interrupts workflow. If you wouldn't hijack the keyboard/mouse/screen for a sighted user, then don't hijack voiceover for the visually impaired user. It's just good computing practice. If your warning is delivered properly, the vo user will get to it when they get to it, and not before. Trying to force the vo user to do something just because you think it's important is not (imo) the way to earn trust and encourage folks touse your app. Developers aren't doing vo users favors by yanking them out of their other applications, moving their cursors around, or changing what their told as a result of doing nothing to affect those actions. Please keep this in mind when developing accessible programs. Voiceover users have no more desire to have their work interrupted than you do, so try to be consistent in how you present information, and don't think that because you think something is important, the user will place the same importance on it.___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
define IBOUtlet connection in design time
Hello I create my IB plug-in, and can't resolve next task. I need detect when happens connecting the outlet between objects. I cant find, what message goes to object (or Inspector class or else ) to notify them about connecting outlet, at design time of course. (I'm sure this is not set/get method. Geter invoked vhen I open Connections panel. But when I set outlet is -set method does not invoked) Any body can tell me how I can catch this message? and where? Thanks! ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Running JavaScript in iOS WebView.
For what it's worth, that framework is definitely fine on iOS. I've used it successfully myself at least twice. On Wed, Nov 17, 2010 at 2:07 PM, Conrad Shultz con...@synthetiqsolutions.com wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 11/17/10 1:33 PM, Geoffrey Holden wrote: void SendDelegateMessage(NSInvocation*): delegate (webViewDidLayout:) failed to return after waiting 10 seconds. main run loop mode: GSEventReceiveRunLoopMode I have got webViewDidFinishLoad (that's where this code is called) - so it isn't that it's trying to run on nothing. If you have any ideas about what I could do to fix this, I'd be most interested to hear them! Hmm. I haven't seen this myself, but are you by any chance trying to do this on a secondary thread? - -- Conrad Shultz Synthetiq Solutions www.synthetiqsolutions.com -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.7 (Darwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iD8DBQFM5FIuaOlrz5+0JdURApjsAJ4uPKnHEFVUJkiJJb7gtLx9dVMnDQCfSi9O gMRqrPoelphoQuTmbPt4esc= =mRgF -END PGP SIGNATURE- ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/apetresc%40gmail.com This email sent to apetr...@gmail.com ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Web services core problem
Hi I m using Web Services Core framework to access a https based SOAP- Web service .But I am getting a error as /FaultCode = -65794; /FaultExtra = { domain = -1; error = -65795; msg = No valid XML data in response; }; /FaultString = /CFStreamFault; And In WSDebugInBody , It says The server encountered an internal error () that prevented it from fulfilling this request.(http status code 500) Actually , I have made first call to web service successfully . But when I make second call to web service for authentication by passing username and password , I am getting error mentioned above. So,how to get rid of this error ? In the technical requirements of web service , it is mentioned that The web service client must support accepting cookies from server and resending them back in HTTP header lines in subsequent web service calls. After server authenticates a user successfully through web service, a session cookie will be sent back in response to the web service client. The client must submit this cookie in all subsequent interaction with the server. Otherwise, any request without this cookie will be blocked out. Would I need to send back cookies to make second call? Actually , I am getting response headers from first call as /WSDebugInHeaders = { Connection = close; Content-Type = text/xml;charset=\utf-8\; Date = Thu, 18 Nov 2010 13:35:50 GMT; Server = Apache; Transfer-Encoding = Identity; }; Looking at response headers, how can I send cookies using Web servcies core ? Do I really need to send it ? I have also tried to make web service call using NSURLConnection. Still I am getting the same error(http status code 500) for the second call . Its Response headers : Connection = Keep-Alive; Content-Type = text/xml;charset=\utf-8\; Date = Fri, 19 Nov 2010 06:39:02 GMT; Keep-Alive = timeout=15, max=100; Server = Apache; Transfer-Encoding = Identity; From response headers , I tried to collect cookies ,but its is returning zero objects as response headers does not contain field like cookie name ,expiration date and so on. //fields is dictionary containing response headers NSArray* allCookies = [NSHTTPCookie cookiesWithResponseHeaderFields:fields forURL: [NSURL URLWithString:url]]; Since I am not getting cookie from the first call, how can I attach it with second call. So what I think after I get authenticated with web service , I will get session cookie in response headers and will send it to each subsequent web service calls. How can I send session cookie with the help of web-services core ?Finally , I would like to go with web services core as it is easy to make a call rather than making soap request and then using NSURLConnection. Surprising thing for me is all calls are succeeded from windows platform . Any suggestion /comments /ideas are welcome. Thanks in advance. Vaibhao Mahore DISCLAIMER == This e-mail may contain privileged and confidential information which is the property of Persistent Systems Ltd. It is intended only for the use of the individual or entity to which it is addressed. If you are not the intended recipient, you are not authorized to read, retain, copy, print, distribute or use this message. If you have received this communication in error, please notify the sender and delete all copies of this message. Persistent Systems Ltd. does not accept any liability for virus infected mails. ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
how to add a custom view (a pair of controls) to an NSToolbar in Interface Builder
I would like to add an item to my window's toolbar that is a custom view containing other standard views. For example a popup button and a static text field. If possible I would like to do this in interface builder, without implementing NSToolbarDelegate. So to clarify.. I have a window with a toolbar in an interface builder file. I want to put a popup button and static text on the toolbar as a single item - I want them to be removeable/addable as a pair, and I want full control over their layout within the toolbar item. I want to run the interface in IB using the Cocoa Simulator and see the popup button and text draw. 1 - Is this possible in Interface Builder? If so, can someone briefly outline the steps? 2 - If this is not possible in IB, how would this best be implemented? If this is the case, can this work alongside configuring the toolbar in IB, or will the allowed items configured in IB be ignored at runtime? (This is why I'd prefer to do this fully in IB). What I have tried: - new window NIB file - add a toolbar - add a custom view to the nib - add controls to the custom view - a button, textfield, etc, tweak layout to taste - drag the custom view to the toolbar customise sheet (i.e. the allowed items area) - it looks like the view content will appear - the buttons are drawn in the allowed items area - drag the custom item to the toolbar (so it is in the default set) - oh no, the buttons disappear - simulate the interface - oh no, still no buttons! I didn't find any confirmation that this is not possible in these previous threads.. http://www.mail-archive.com/cocoa-dev@lists.apple.com/msg35450.html http://www.cocoabuilder.com/archive/cocoa/282463-custom-view-in-toolbar.html thanks for the help Rua HM. -- http://cartoonbeats.com___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Customised NSCell leaves dirty traces while scrolling
Hey guys I was implementing a customised NSCell into NSTableView and it leaves dirty traces while scrolling up bit by bit. The cell was subclassed from NSTextFieldCell, using drawInteriorWithFrame: and coordinates to locate and place elements inside (drawInRect for NSStrings whatever). The NSTableView calls cells via dataCellForTableColumn:row: and passes the current cell frame boundary NSRect to cells for drawing. It looked all well and neat except for sometimes leaving dirty traces while scrolling up slowly bit by bit. The capture below sketches the problem as dirty bits are lying under the first retweet by retweet by as a result of scrolling up. [ Image: http://img89.imageshack.us/img89/3644/20101120060934.png ] A call to NSTableView setNeedsDisplay:YES will always solve the problem however too inefficient. Can anyone please suggest if there's anything might be done to fix that up? kjoika ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Problem with soap based https Web service call using Web Services core
hello, I m using Web Services Core framework to access a https based SOAP- Web service .I am getting a error as /FaultCode = -65794; /FaultExtra = { domain = -1; error = -65795; msg = No valid XML data in response; }; /FaultString = /CFStreamFault; And In WSDebugInBody , It says The server encountered an internal error () that prevented it from fulfilling this request.(http status code 500) Actually , I have made first call to web service successfully . But when I make second call to web service for authentication by passing username and password , I am getting error mentioned above. So,how to get rid of this error ? In the technical requirements of web service , it is mentioned that The web service client must support accepting cookies from server and resending them back in HTTP header lines in subsequent web service calls. After server authenticates a user successfully through web service, a session cookie will be sent back in response to the web service client. The client must submit this cookie in all subsequent interaction with the server. Otherwise, any request without this cookie will be blocked out. Would I need to send back cookies to make second call? Actually , I am getting response headers from first call as /WSDebugInHeaders = { Connection = close; Content-Type = text/xml;charset=\utf-8\; Date = Thu, 18 Nov 2010 13:35:50 GMT; Server = Apache; Transfer-Encoding = Identity; }; Looking at response headers,there is no field like Set-Cookie.Then , how can I send cookies using Web servcies core ? Do I really need to send it ? Is the error (http status code 500) getting because of not sending the cookies to second call? Actually , I have also tried to make second request by taking response field headers like Connection, accept-encoding,Content-Type, and Date (all are valid Http request headers).But still I am getting the same error. Vaibhao Mahore DISCLAIMER == This e-mail may contain privileged and confidential information which is the property of Persistent Systems Ltd. It is intended only for the use of the individual or entity to which it is addressed. If you are not the intended recipient, you are not authorized to read, retain, copy, print, distribute or use this message. If you have received this communication in error, please notify the sender and delete all copies of this message. Persistent Systems Ltd. does not accept any liability for virus infected mails. ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Notification of CD-ROM inserted
On Wed, Nov 17, 2010 at 9:53 AM, Bilel Mhedhbi bilel.mhed...@gmail.comwrote: I want my application to be notified when a CD-ROM is inserted. Watch for NSWorkspaceDidMountNotification notifications. See: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html sherm-- -- Cocoa programming in Perl: http://camelbones.sourceforge.net ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Notification of CD-ROM inserted
I'd use either NSWorkspaceDidMountNotification or DARegisterDiskAppearedCallback() of the DiskArbitration framework. ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Help with Basics (Was: help with bindings)
Thanks Jerry, I have used the dictionaryWithObjectsAndKeys: method. I have implemented your suggestions regarding convenience constructors and myKeys object. Regarding your comment about making everything mutable, I think, at the moment, it has to be that way. What's next? #import Cocoa/Cocoa.h @interface ComboscAppDelegate : NSObject NSApplicationDelegate { IBOutlet NSComboBox *countryCombo; NSMutableDictionary *theCountries; NSMutableArray *myKeys; IBOutlet NSWindow *window; } @property (assign) IBOutlet NSWindow *window; - (void)applicationWillFinishLaunching:(NSNotification *)notif; @end #import ComboscAppDelegate.h @implementation ComboscAppDelegate @synthesize window; - (void)applicationWillFinishLaunching:(NSNotification *)notif { theCountries = [NSMutableDictionary dictionaryWithObjectsAndKeys: [NSMutableArray arrayWithObjects:@AAABBB, @AABBB, @AAACCC, nil], @A, [NSMutableArray arrayWithObjects:@BBBAAA, @, @BBBCCC, nil], @B, [NSMutableArray arrayWithObjects:@CCCDDD, @CCFGGGFF, @CCCDDDFFF, nil], @C, nil]; myKeys = [NSMutableArray arrayWithObjects: [theCountries allKeys], nil]; } @end ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Customised NSCell leaves dirty traces while scrolling
On 20 Nov 2010, at 07:24, Josh Yu wrote: A call to NSTableView setNeedsDisplay:YES will always solve the problem however too inefficient. Can anyone please suggest if there's anything might be done to fix that up? kjoika ___ Try overriding NSCell - drawWithFrame:inView: IIRC this is called before - drawInteriorWithFrame:InView: The default implementation of - drawWithFrame:inView: is perhaps the source of your unwanted drawing. Regards Jonathan Mitchell Developer Mugginsoft LLP http://www.mugginsoft.com___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: NSExpression is incorrect?
Another option would be to make your code mimic whatever NSExpression is doing on that machine, by evaluating 2 ** 3 ** 2 (once, and caching the result) and seeing whether it comes out as 64 or 512. That way if/when Apple fixes their bug, your code will seamlessly follow suit. Which of these alternatives is best depends upon how your code is going to be used, of course. Roland's suggestion of a compatibility switch seems good; the behavior I suggest could be a third option for that switch. Then the user of the class can decide what they want to get. Probably the best default would be to use the correct (right associative) parsing, though, as it seems unlikely that a whole lot of code specifically depends upon this bug in NSExpression, so for most clients there is probably no need to propagate the buggy behavior... Ben Haller McGill University On 2010-11-21, at 1:07 AM, Roland King wrote: I agree with you that exponentiation is usually defined as right-associative. How about a compatibility switch in your code which you can flip to make it work either way. On 21-Nov-2010, at 11:25 AM, Dave DeLong wrote: Hi everyone, Let's say I have the string @2 ** 3 ** 2. I can run this through NSPredicate to parse it into an NSExpression tree for me, like so: NSExpression * e = [(NSComparisonPredicate *)[NSPredicate predicateWithFormat:@2 ** 3 ** 2 == 0] leftExpression]; When I log/evaluate this predicate, it gives me (2 ** 3) ** 2, which evaluates to 64. In other words, NSExpression (or NSPredicate or whomever) has assumed that the power operator is a left-associative operator. According to Wikipedia (the source of all truth and knowledge), when no parentheses are present in the expression, the order is usually understood to be top-down, not bottom-up. [1] In other words, a ** b ** c is understood to be a ** (b ** c), not (a ** b) ** c. Put more formally, the power operator is supposed to be right associative. (rdar://problem/8692313) I'm currently working on some code that mimics much of the behavior of NSExpression. However, I'm now faced with a choice: do I make my code technically correct by making the power operator right associative, or do I maintain parity with NSExpression and make it left associative? Any suggestions you have would be welcome. Thanks, Dave DeLong [1]: http://en.wikipedia.org/wiki/Exponentiation#Identities_and_properties ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/rols%40rols.org This email sent to r...@rols.org ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/bhcocoadev%40sticksoftware.com This email sent to bhcocoa...@sticksoftware.com ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Help with Basics (Was: help with bindings)
On Nov 21, 2010, at 2:59 AM, Rounak Jain wrote: Thanks Jerry, I have used the dictionaryWithObjectsAndKeys: method. I have implemented your suggestions regarding convenience constructors and myKeys object. Regarding your comment about making everything mutable, I think, at the moment, it has to be that way. What's next? As Jerry pointed out, you need to learn the basics; please read up on the basics to include memory management. The way you've now written things will cause your app to crash. I'll leave the reason for the crash as an exercise for you to figure out. #import Cocoa/Cocoa.h @interface ComboscAppDelegate : NSObject NSApplicationDelegate { IBOutlet NSComboBox *countryCombo; NSMutableDictionary *theCountries; NSMutableArray *myKeys; IBOutlet NSWindow *window; } @property (assign) IBOutlet NSWindow *window; - (void)applicationWillFinishLaunching:(NSNotification *)notif; @end #import ComboscAppDelegate.h @implementation ComboscAppDelegate @synthesize window; - (void)applicationWillFinishLaunching:(NSNotification *)notif { theCountries = [NSMutableDictionary dictionaryWithObjectsAndKeys: [NSMutableArray arrayWithObjects:@AAABBB, @AABBB, @AAACCC, nil], @A, [NSMutableArray arrayWithObjects:@BBBAAA, @, @BBBCCC, nil], @B, [NSMutableArray arrayWithObjects:@CCCDDD, @CCFGGGFF, @CCCDDDFFF, nil], @C, nil]; myKeys = [NSMutableArray arrayWithObjects: [theCountries allKeys], nil]; } @end ___ Ricky A. Sharp mailto:rsh...@instantinteractive.com Instant Interactive(tm) http://www.instantinteractive.com ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Help with Basics
As Jerry pointed out, you need to learn the basics; please read up on the basics to include memory management. I am using Garbage collector. ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Help with Basics
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Rounak Jain wrote: As Jerry pointed out, you need to learn the basics; please read up on the basics to include memory management. I am using Garbage collector. ___ The previous comments still stand. For starters, there are a few good reasons you should still understand non-GC memory management: 1) You may end up having to maintain someone else's reference-counted code or develop code for a non-GC environment. A dual-mode framework is an example of such code. 2) There can be issues with garbage collection depending on your application design - cf. Garbage Collection Programming Guide's Adopting Garbage Collection. 3) Garbage Collection does not exist (yet) in iOS. Even if you are sure these will never apply to you (and never say never), your code reveals a general need to learn the basics. - -- Conrad Shultz Synthetiq Solutions www.synthetiqsolutions.com -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkzpW5AACgkQaOlrz5+0JdW79ACbBB3XzDSznH2zVphfyA4oEGFg S84AnjylhAj2oVWyPDUZEApwCPZjXVCT =1M7v -END PGP SIGNATURE- ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Core data fetch and multithreading
Hi there, briefly speaking, I have a Core Data Entity bearing a to-many relationship (therefore an NSSet * iVar). A dialog on the main thread can modify this set, while it may be simultaneously enumerated on a background GCD thread. I have therefore used the managed object context provided mutex to protect the respective snippets. I am improving the background thread, replacing the enumeration by a fetch operation. Do I still need the lock, or is it provided internally by the Core Data framework? Thanks, Vincent___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Loading NSManagedObjects across NSManagedObjectContexts in an unsaved NSPersistentDocument
Le 21 nov. 2010 à 20:09, Dave Zwerdling a écrit : The issue lies in this: I have a background-thread reader of entities. Because it is multithreaded, it uses a separate MOC for the entities to be read. These MOCs have their persistent store coordinator the same as the document. The background thread always returns faulted objects until the persistent document is saved. If this is your problem, this is normal. Until they are saved to the persistent document, newly created objects are local to their MOC and cannot be accessed elsewhere: upon creation, they are assigned temporary IDs. Vincent___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Core data fetch and multithreading
Le 21 nov. 2010 à 21:39, Quincey Morris a écrit : It's not an ivar, it's a property. You're perfectly right. You can't modify a NSSet. I suspect you mean modify this relationship, but the ambiguity leads me to wonder if you're trying to do something funky here. Not that it's relevant to your actual question ... I mean that I replace an entity in the set, so I add one new entity and I remove an old one via the appropriate mutators (-addEntityObject, -removeEntityObject). under the heading General Guidelines. If I understand your scenario correctly, you've been using approach #3, the one labeled This approach is strongly discouraged. Exactly, that's why I want to change. Note that my needs are fairly basic, so I didn't see the point of entering into a more complex scheme. Use approach #1 (except in the unlikely case that performance is an issue without full concurrency, in which case use approach #2). I know I should have two MOCs, but that leads to further difficulties linked to mutator use. I see fairly clearly how to get a copy of the root entity (the one that has the NSSet *), but how about the entities at the other end of the relationship? Should I enumerate all those to get copies, and then perform the mutation on the copies? Can I directly mutate the set from the root copy object without making this expensive copying operation? Is the change immediately reflected in the other MOC (I need real time interaction), etc. Thanks for answering, have a nice Sunday! Vincent___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Core data fetch and multithreading
On Nov 21, 2010, at 11:47, vincent habchi wrote: briefly speaking, I have a Core Data Entity bearing a to-many relationship (therefore an NSSet * iVar). It's not an ivar, it's a property. A dialog on the main thread can modify this set, You can't modify a NSSet. I suspect you mean modify this relationship, but the ambiguity leads me to wonder if you're trying to do something funky here. Not that it's relevant to your actual question ... while it may be simultaneously enumerated on a background GCD thread. I have therefore used the managed object context provided mutex to protect the respective snippets. I am improving the background thread, replacing the enumeration by a fetch operation. Do I still need the lock, or is it provided internally by the Core Data framework? Look at: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdMultiThreading.html under the heading General Guidelines. If I understand your scenario correctly, you've been using approach #3, the one labeled This approach is strongly discouraged. Use approach #1 (except in the unlikely case that performance is an issue without full concurrency, in which case use approach #2). ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Loading NSManagedObjects across NSManagedObjectContexts in an unsaved NSPersistentDocument
Hi everyone, Here's the context: I have a Core-Data document-based application. There is an importer which creates new data to be imported into the document. When the user specifies, particular entities are then moved into the document's MOC. Because the imported can run prior to a document's save, it uses an alternative, in-memory persistent store for its MOCs. When the user choses to import the entities, they are copied to the document's MOC. This all works fine. The issue lies in this: I have a background-thread reader of entities. Because it is multithreaded, it uses a separate MOC for the entities to be read. These MOCs have their persistent store coordinator the same as the document. The background thread always returns faulted objects until the persistent document is saved. I have narrowed it down to a specific use case: 1) If entities are created by the importer, copied into the document, the document is unsaved, and then viewed using the same MOC, all the values are fine, and the multithreaded reader gets loaded values for entities referenced from the document's MOC. 2) If entities are created by the importer, copied, then the document is saved, the multithreaded reader gets non-faulted entities. 3) If entities are created, copied, viewed in the main thread, the document unsaved, the background-thread reader gets non-faulted entities. HOWEVER: 4) If entities are created, copied, the document is unsaved, the data is not viewed from the document's MOC, and the background-thread reader tries to access values, it only receives faults. Because of the above results, I believe the background-thread MOC is not loading the data appropriately until a save action occurs. This is an issue because I have no guarantee that users will save their documents prior to using the function of the App that requires background processing. Things I have tried: •Calling save: on the document's MOC after an entity has been copied. •Fetching the relationships via NSFetchRequests. •Calling willAccessValueForKey: on the faulted Conceptually, I understand that the data cannot be fetched from the persistent store if there isn't a persistent store. In that case, where are the entities going when they exist and are fetchable from the MOC? Is there a way to create a second, temporary in-memory store for the document? Doesn't a MOC always have to have a PS via its PSC? As you can probably tell, I've been stuck on this issue for a while. Does anyone have anything I might try?___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Core data fetch and multithreading
On Nov 21, 2010, at 12:50, vincent habchi wrote: Exactly, that's why I want to change. Note that my needs are fairly basic, so I didn't see the point of entering into a more complex scheme. I think the point is that it's far *less* complex because the code to deal with a second MOC should be a lot simpler than the thread locking code. Plus, the chances are that your locking code is wrong. :) (Trust me, that's not a dig at you personally. But multithreading interlocks are *hard*. Such code can work almost all of the time and still be wrong.) I know I should have two MOCs, but that leads to further difficulties linked to mutator use. I see fairly clearly how to get a copy of the root entity (the one that has the NSSet *), but how about the entities at the other end of the relationship? Should I enumerate all those to get copies, and then perform the mutation on the copies? Can I directly mutate the set from the root copy object without making this expensive copying operation? Is the change immediately reflected in the other MOC (I need real time interaction), etc. You've added important information. If you're *changing* the objects enumerated in the background thread, you're going to run into difficulties with the NSDocument metaphor. (You can't -[save:] the MOC in the background thread because you shouldn't be changing the document file without the user having a say in it, and you can't release the background MOC without losing the changes. You might be forced to merge the changes back into the original context.) Approach #3 *might* be the best way after all, but I think if you're trying to get multithreaded data changing within a NSDocument/NSPersistentDocument scenario (which is kind of a hack to begin with) you might need to go deeper into the design process anyway. For example, you might be able to break everything (including your current foreground and background object modification loops) down into smaller steps that you schedule with GCD. Speaking from very painful experience, I'd recommend you be careful trying to design for performance if you need Core Data to behave in certain ways to make the design work. What seems like a small operation from your side of the Core Data API can be something entirely different in the Core Data implementation. (Note that I'm not saying anything against Core Data performance -- it's highly optimized -- but rather against making assumptions about how Core Data implements its behavior. You can't observe Core Data to find out, either. Its implementation characteristics really do change in dramatic ways between Mac OS versions.) ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Core data fetch and multithreading
Quincey: I think the point is that it's far *less* complex because the code to deal with a second MOC should be a lot simpler than the thread locking code. Plus, the chances are that your locking code is wrong. :) (Trust me, that's not a dig at you personally. But multithreading interlocks are *hard*. Such code can work almost all of the time and still be wrong.) Oh, I know that too ;) Back when I was in U. I worked on a custom 4 x MC68000 machine, with TAS semaphores in assembler. That was fun, hardware AND software (rewriting code is fairly free, but burning PALs was not! ;)) You've added important information. If you're *changing* the objects enumerated in the background thread, you're going to run into difficulties with the NSDocument metaphor. (You can't -[save:] the MOC in the background thread because […] No, fortunately, that's the contrary: I'm reading objects in the background, to get them displayed, while the user can modify their properties in the foreground, so only the main thread alters the relationship entity members. Besides, the background processes are transitory (only -displayInContext: in GCD queues). I try to keep it short here, but if you desire more info, I'll happily send it to you in a separate mail. Thanks again (I'm going to bed this time)! Vincent ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Loading NSManagedObjects across NSManagedObjectContexts in an unsaved NSPersistentDocument
On Nov 21, 2010, at 11:37 AM, vincent habchi wrote: Le 21 nov. 2010 à 20:09, Dave Zwerdling a écrit : The issue lies in this: I have a background-thread reader of entities. Because it is multithreaded, it uses a separate MOC for the entities to be read. These MOCs have their persistent store coordinator the same as the document. The background thread always returns faulted objects until the persistent document is saved. If this is your problem, this is normal. Until they are saved to the persistent document, newly created objects are local to their MOC and cannot be accessed elsewhere: upon creation, they are assigned temporary IDs. Vincent Is there a recommended way to enhance this to do what I need? I assume I would need to create an in-memory store and keep the entities there, but how do I ensure that the documents will also make it to the persistent document on save? Dave___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Loading NSManagedObjects across NSManagedObjectContexts in an unsaved NSPersistentDocument
On Sun, Nov 21, 2010 at 2:32 PM, Dave Zwerdling zwerd...@gmail.com wrote: On Nov 21, 2010, at 11:37 AM, vincent habchi wrote: Le 21 nov. 2010 à 20:09, Dave Zwerdling a écrit : The issue lies in this: I have a background-thread reader of entities. Because it is multithreaded, it uses a separate MOC for the entities to be read. These MOCs have their persistent store coordinator the same as the document. The background thread always returns faulted objects until the persistent document is saved. If this is your problem, this is normal. Until they are saved to the persistent document, newly created objects are local to their MOC and cannot be accessed elsewhere: upon creation, they are assigned temporary IDs. Vincent Is there a recommended way to enhance this to do what I need? I assume I would need to create an in-memory store and keep the entities there, but how do I ensure that the documents will also make it to the persistent document on save? Saving means writing things to the persistent store. You cannot share unsaved objects between MOCs. Ergo, in order to get access to the objects from the other MOC, the objects must already be in the persistent store because the originating MOC has been saved. What are you trying to accomplish? --Kyle Sluder ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Loading NSManagedObjects across NSManagedObjectContexts in an unsaved NSPersistentDocument
On Nov 21, 2010, at 2:47 PM, Kyle Sluder wrote: On Sun, Nov 21, 2010 at 2:32 PM, Dave Zwerdling zwerd...@gmail.com wrote: On Nov 21, 2010, at 11:37 AM, vincent habchi wrote: Le 21 nov. 2010 à 20:09, Dave Zwerdling a écrit : The issue lies in this: I have a background-thread reader of entities. Because it is multithreaded, it uses a separate MOC for the entities to be read. These MOCs have their persistent store coordinator the same as the document. The background thread always returns faulted objects until the persistent document is saved. If this is your problem, this is normal. Until they are saved to the persistent document, newly created objects are local to their MOC and cannot be accessed elsewhere: upon creation, they are assigned temporary IDs. Vincent Is there a recommended way to enhance this to do what I need? I assume I would need to create an in-memory store and keep the entities there, but how do I ensure that the documents will also make it to the persistent document on save? Saving means writing things to the persistent store. You cannot share unsaved objects between MOCs. Ergo, in order to get access to the objects from the other MOC, the objects must already be in the persistent store because the originating MOC has been saved. What are you trying to accomplish? --Kyle Sluder I have a fetcher which provides managed objects into the persistent store. I also have a class which needs to read the objects from another MOC because it is being run in a background thread. Unless the fetcher provides the managed objects, then the user saves, and only then attempts to use the functionality that requires the background thread does the MOC in the background thread become useful. Since I cannot guarantee that the user will save (nor do I want to require that procedure) I need to somehow be able to have accurate data in the background-thread MOC. Does this make sense? Dave___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Re: Customised NSCell leaves dirty traces while scrolling
Try overriding NSCell - drawWithFrame:inView: IIRC this is called before - drawInteriorWithFrame:InView: The default implementation of - drawWithFrame:inView: is perhaps the source of your unwanted drawing. Regards Jonathan Mitchell Thanks Jonathan for your reply. I've tried replacing drawInteriorWithFrame with drawWithFrame and no luck :( I however looked into my overriding on heightOfRow, which hands back a calculated row height according to the variable heights of elements placed inside. Forcing heightOfRow producing a fixed height for each row seemed to have fixed the problem which is suggesting that there might be flaws in my text rect calculating codes. kjoika ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Loading NSManagedObjects across NSManagedObjectContexts in an unsaved NSPersistentDocument
Le 22 nov. 2010 à 00:38, Dave Zwerdling zwerd...@gmail.com a écrit : I have a fetcher which provides managed objects into the persistent store. I also have a class which needs to read the objects from another MOC because it is being run in a background thread. You've somehow run into the same issue than me. At that point, there are, I think, two possibilities: 1. Use a single MOC and its provided mutex for accessing shared ressources (but this is strongly discouraged); 2. Create a private pool of memory in which you duplicate new objects until they are saved. Vincent ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com