Re: Detecting Managed Object Property Change From Undo Redo

2015-01-25 Thread Jerry Krinock

> On 2015 Jan 25, at 22:03, Kyle Sluder  wrote:
> 
> On Sun, Jan 25, 2015, at 05:16 PM, Jerry Krinock wrote:

>> • When an observer is being torn down you can remove all observers with
>> one line of code,
>> [NSNotificationCenter removeObserver:self].

> This is a dangerous API. If your superclass has registered for any
> observations, you will unregister before your superclass hears about it.

I see what you mean, that if the superclass needed for some reason to receive 
some notification at the bitter end of an object’s life, that line of code 
would break it.  I’m trying to imagine such a requirement.  Maybe to push 
changes to a data model in a view that was editing?  But we have various 
-endEditing methods for that.

On the other hand, I’ve seen many crashes occur from not removing observers 
early enough.  In general, as soon as it’s confirmed that an object is going 
away, the very first thing I do is to remove all of its observances.  It has 
worked for me, but from now on I’ll think about what you said.

> You can use the magic of C's sizeof keyword to avoid repeating yourself
> for each observed keypath:

And C arrays.  Very cool, Kyle.


___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Detecting Managed Object Property Change From Undo Redo

2015-01-25 Thread Kyle Sluder
On Sun, Jan 25, 2015, at 05:16 PM, Jerry Krinock wrote:
• Amount of code required is the same or less
> • Ability to coalesce and filter notifications per object or name
> • When an observer is being torn down you can remove all observers with
> one line of code,
>  [NSNotificationCenter removeObserver:self].

This is a dangerous API. If your superclass has registered for any
observations, you will unregister before your superclass hears about it.

> With KVO, if I recall correctly, you need to remember and remove each
> observance, arg.

You can use the magic of C's sizeof keyword to avoid repeating yourself
for each observed keypath:

static void *observationContext = &observationContext;
static NSString *observedKeypaths[] = {@"prop1", @"prop2"};

- (void)startObservingModelObject:(MyModelObject *)obj
{
  for (int i = 0; i < sizeof(observedKeypaths) /
  sizeof(*observedKeypaths); i++)
[obj addObserver:self forKeyPath:observedKeypaths[i] options:0
context:observationContext];
}

- (void)stopObservingModelObject:(MyModelObject *)obj
{
  for (int i = 0; i < sizeof(observedKeypaths) /
  sizeof(*observedKeypaths); i++)
[obj removeObserver:self forKeyPath:observedKeypaths[i]
context:observationContext];
}

--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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Any way to force a window under the menu bar?

2015-01-25 Thread Eric Schlegel

> On Jan 25, 2015, at 8:39 PM, Trygve Inda  wrote:
> 
> I have created a borderless NSWindow. Is there a way to force it to appear
> under the menu bar so that the content of the window shows through the
> translucent menu bar?

Even if you force it under the menubar, you won’t see its content show up in 
the menubar; the menubar window pulls its blurred content exclusively from the 
desktop image.

-eric


___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Any way to force a window under the menu bar?

2015-01-25 Thread Trygve Inda
I have created a borderless NSWindow. Is there a way to force it to appear
under the menu bar so that the content of the window shows through the
translucent menu bar?

The OS seems to be resizing or repositioning my window to prevent it from
sliding under the menu bar even when positioned programmatically (ie not
dragging).

Thanks,

Trygve



___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Binding to a view's model object

2015-01-25 Thread Keary Suska

On Jan 25, 2015, at 6:07 PM, Roland King  wrote:

> 
>> On 25 Jan 2015, at 23:15, Keary Suska  wrote:
>> 
>> On Jan 25, 2015, at 3:34 AM, Roland King  wrote:
>> 
>>> I have a xib with a top-level view and a bunch of subviews which represents 
>>> one view of a given model object. The top-level NSView subclass has a 
>>> readwrite property which is the model object of which it's a view. I 
>>> thought this was a pretty standard pattern, especially in OSX which only 
>>> just recently started to really make use of view controllers. 
>> 
>> There is nothing standard about this pattern. It is not, AFAIK, a pattern at 
>> all, but an anti-pattern. Previous to a view controller the only "view" 
>> controller was a window controller, and finer grained control was necessary. 
>> For this very purpose it is the view controller, and not its view, which 
>> tends to "hold" the model object. Hence Xcode is balking at your attempts.
>> 
> 
> And yet I was certain I'd stolen it from somewhere, and woke up remembering 
> where. NSTableCellView, is a view, has an objectValue property. When you drag 
> an NSTableCellView into IB and add subviews to it, the bindings inspector 
> dropdown for those subviews includes the table cell view, called something 
> like XXX Cell View. So you bind to 'XXX cell view' with path 
> 'objectValue.someProperty'. The NSTableCellView is really the VC and 
> objectValue is the model object. 

Of course--in this case, NSTableCellView is really just acting as an 
intermediary for its subviews. In a way, the subviews are really binding 
*through* NSTableCellView , although it is hiding those implementation details. 
That may be what you are after but it didn't seem to be what you were 
describing.

> What I have is a direct rip off of that pattern. I've embedded a stack view 
> in a class and given it a datasource which serves up NSView subclasses for an 
> item at a given index, you can register a nib against an identifier and ask 
> the class to create you a new view or give you a reused one. The method names 
> are even stolen pretty much straight from NSTableView. It's like an 
> NSTableView or a NSOutlineView in usage, just uses a stack view under the 
> hood (because stack view uses autolayout and this makes dynamic row sizing 
> etc super easy when you have rows which use autolayout). IB however knows 
> about NSTableCellViews and adds them into the bindings inspector dropdown for 
> their subviews, it doesn't know about my top-level view class, 
> RKStackCellView, and doesn't. 
> 
> I can add them in awakeFromNib pretty easily, do in code what IB does for 
> NSTableCellViews graphically, or I could change my datasource method from 
> returning an NSView*, like NSTableView's does, to returning a view 
> controller, and then keep track of the VCs and their associated views in my 
> stack view using class, as the stack view only wants the NSView but I'd need 
> to keep the VCs referenced somehow to stop them being deallocated. I'll try 
> them both, see which one I like best. 

You can do what you want, you would just have to manage the bindings 
programmatically. It still seems easier to me--and possibly saner--for each 
view to have a VC that holds the model, and to which the subviews are bound.

HTH,

Keary Suska
Esoteritech, Inc.
"Demystifying technology for your home or business"


___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: setApplicationIconImage:

2015-01-25 Thread Rick C.
Got it Jens and thanks everyone for the help it’s much appreciated… :-)


> On Jan 24, 2015, at 1:05 AM, Jens Alfke  wrote:
> 
> 
>> On Jan 23, 2015, at 1:53 AM, Rick C. > > wrote:
>> 
>> Unfortunately setApplicationIconImage: works great it’s just I can’t find a 
>> method to put it in that will cause the change before the app launches.  It 
>> always takes place a second after the app launches…
> 
> What you're asking for is impossible, because -setApplicationIconImage is a 
> TEMPORARY change to the icon that only takes effect when the method is 
> called, and goes away when the app quits. Read that word again: TEMPORARY.
> 
> We explained this to you already. If you ask questions and then ignore the 
> answers, it makes people less likely to help you in the future. :-p
> 
> —Jens

___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Binding to a view's model object

2015-01-25 Thread Roland King

> On 25 Jan 2015, at 23:15, Keary Suska  wrote:
> 
> On Jan 25, 2015, at 3:34 AM, Roland King  wrote:
> 
>> I have a xib with a top-level view and a bunch of subviews which represents 
>> one view of a given model object. The top-level NSView subclass has a 
>> readwrite property which is the model object of which it's a view. I thought 
>> this was a pretty standard pattern, especially in OSX which only just 
>> recently started to really make use of view controllers. 
> 
> There is nothing standard about this pattern. It is not, AFAIK, a pattern at 
> all, but an anti-pattern. Previous to a view controller the only "view" 
> controller was a window controller, and finer grained control was necessary. 
> For this very purpose it is the view controller, and not its view, which 
> tends to "hold" the model object. Hence Xcode is balking at your attempts.
> 

And yet I was certain I'd stolen it from somewhere, and woke up remembering 
where. NSTableCellView, is a view, has an objectValue property. When you drag 
an NSTableCellView into IB and add subviews to it, the bindings inspector 
dropdown for those subviews includes the table cell view, called something like 
XXX Cell View. So you bind to 'XXX cell view' with path 
'objectValue.someProperty'. The NSTableCellView is really the VC and 
objectValue is the model object. 

What I have is a direct rip off of that pattern. I've embedded a stack view in 
a class and given it a datasource which serves up NSView subclasses for an item 
at a given index, you can register a nib against an identifier and ask the 
class to create you a new view or give you a reused one. The method names are 
even stolen pretty much straight from NSTableView. It's like an NSTableView or 
a NSOutlineView in usage, just uses a stack view under the hood (because stack 
view uses autolayout and this makes dynamic row sizing etc super easy when you 
have rows which use autolayout). IB however knows about NSTableCellViews and 
adds them into the bindings inspector dropdown for their subviews, it doesn't 
know about my top-level view class, RKStackCellView, and doesn't. 

I can add them in awakeFromNib pretty easily, do in code what IB does for 
NSTableCellViews graphically, or I could change my datasource method from 
returning an NSView*, like NSTableView's does, to returning a view controller, 
and then keep track of the VCs and their associated views in my stack view 
using class, as the stack view only wants the NSView but I'd need to keep the 
VCs referenced somehow to stop them being deallocated. I'll try them both, see 
which one I like best. 





___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Crash in libsystem_kernel.dylib`__workq_kernreturn:

2015-01-25 Thread Stephen J. Butler
I agree that it sounds like a memory management bug. Especially since
you aren't using ARC. Try turning on NSZombies and see if it crashes
at a more helpful point.

http://michalstawarz.pl/2014/02/22/debug-exc_bad_access-nszombie-xcode-5/

On Sun, Jan 25, 2015 at 4:57 PM, Trygve Inda  wrote:
>> On Jan 25, 2015, at 12:33 , Trygve Inda  wrote:
>>>
>>> It does seem like if I remove a call to
>>>
>>> NSData* imageData = [[self myImageRep]
>>> representationUsingType:NSJPEGFileType properties:imageProperties];
>>>
>>> It no longer crashes, but the crash happens 3-5 seconds after this call when
>>> my program should be idle.
>>
>> It sounds like a memory management bug. What’s the context of the above line
>> of code? Is it in a block? Are you using ARC?
>>
>>
>
> No ARC and not in a block. I am trying to make a jpg file from a
> NSBitmapImageRep which works fine, but sometimes I get a crash... Even
> though the file is correctly produced.
>
>
>
>
>
> ___
>
> 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:
> https://lists.apple.com/mailman/options/cocoa-dev/stephen.butler%40gmail.com
>
> This email sent to stephen.but...@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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Crash in libsystem_kernel.dylib`__workq_kernreturn:

2015-01-25 Thread Trygve Inda
> What are you using for memory management then? Manual, GC?
> 
> Sent from my iPad
> 
> On 25 Jan 2015, at 22:57, Trygve Inda  wrote:
> 
 On Jan 25, 2015, at 12:33 , Trygve Inda  wrote:
 
 It does seem like if I remove a call to
 
 NSData* imageData = [[self myImageRep]
 representationUsingType:NSJPEGFileType properties:imageProperties];
 
 It no longer crashes, but the crash happens 3-5 seconds after this call
 when
 my program should be idle.
>>> 
>>> It sounds like a memory management bug. What’s the context of the above line
>>> of code? Is it in a block? Are you using ARC?
>> 
>> No ARC and not in a block. I am trying to make a jpg file from a
>> NSBitmapImageRep which works fine, but sometimes I get a crash... Even
>> though the file is correctly produced.

Manual (no GC). I am also using memory-mapped files with mmap and munmap.

Trygve




___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Crash in libsystem_kernel.dylib`__workq_kernreturn:

2015-01-25 Thread Kevin Meaney
What are you using for memory management then? Manual, GC?

Sent from my iPad

On 25 Jan 2015, at 22:57, Trygve Inda  wrote:

>>> On Jan 25, 2015, at 12:33 , Trygve Inda  wrote:
>>> 
>>> It does seem like if I remove a call to
>>> 
>>> NSData* imageData = [[self myImageRep]
>>> representationUsingType:NSJPEGFileType properties:imageProperties];
>>> 
>>> It no longer crashes, but the crash happens 3-5 seconds after this call when
>>> my program should be idle.
>> 
>> It sounds like a memory management bug. What’s the context of the above line
>> of code? Is it in a block? Are you using ARC?
> 
> No ARC and not in a block. I am trying to make a jpg file from a
> NSBitmapImageRep which works fine, but sometimes I get a crash... Even
> though the file is correctly produced.
> 
> 
> 
> 
> 
> ___
> 
> 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:
> https://lists.apple.com/mailman/options/cocoa-dev/ktam%40yvs.eu.com
> 
> This email sent to k...@yvs.eu.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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Detecting Managed Object Property Change From Undo Redo

2015-01-25 Thread Jerry Krinock

On 2015 Jan 25, at 01:20, Mike Abdullah  wrote:

> You are mistaken. Core Data *does* fire KVO notifications during undo/redo.

Although I wasn’t aware of this, I just did a little experiment and found that 
Mike is correct…

http://youtu.be/PUHBAq-Me_4

On 25 Jan 2015, at 06:35, Richard Charles  wrote:

> The only solution seems to be to use custom primitive accessors that have 
> change notification.  What am I doing wrong?

I would not override the primitive accessors; instead I would override the 
regular accessors, or if you are using mogenerator, that has already been done 
for you.

The reason I had to run that test is because I don’t use KVO for observing 
managed object properties.  Instead, I use NSNotificationCenter, which has 
these advantages…

• Amount of code required is the same or less
• Ability to coalesce and filter notifications per object or name
• When an observer is being torn down you can remove all observers with one 
line of code,
 [NSNotificationCenter removeObserver:self].
With KVO, if I recall correctly, you need to remember and remove each 
observance, arg.

Just my two cents.  There are many ways to do this.


___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Crash in libsystem_kernel.dylib`__workq_kernreturn:

2015-01-25 Thread Trygve Inda
> On Jan 25, 2015, at 12:33 , Trygve Inda  wrote:
>> 
>> It does seem like if I remove a call to
>> 
>> NSData* imageData = [[self myImageRep]
>> representationUsingType:NSJPEGFileType properties:imageProperties];
>> 
>> It no longer crashes, but the crash happens 3-5 seconds after this call when
>> my program should be idle.
> 
> It sounds like a memory management bug. What’s the context of the above line
> of code? Is it in a block? Are you using ARC?
> 
> 

No ARC and not in a block. I am trying to make a jpg file from a
NSBitmapImageRep which works fine, but sometimes I get a crash... Even
though the file is correctly produced.
 




___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Crash in libsystem_kernel.dylib`__workq_kernreturn:

2015-01-25 Thread Quincey Morris
On Jan 25, 2015, at 12:33 , Trygve Inda  wrote:
> 
> It does seem like if I remove a call to
> 
> NSData* imageData = [[self myImageRep]
> representationUsingType:NSJPEGFileType properties:imageProperties];
> 
> It no longer crashes, but the crash happens 3-5 seconds after this call when
> my program should be idle.

It sounds like a memory management bug. What’s the context of the above line of 
code? Is it in a block? Are you using ARC?


___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Adding constrains for anonymous buttons

2015-01-25 Thread Ben Kennedy
On 25 Jan 2015, at 7:32 am, Aaron Lewis  wrote:

> I'm trying to create a "label group", so I decided to generate 3
> buttons and put them in a single line, evenly sized and evenly spaced.

What do you mean by "label group"?  Would UILabel be more suitable than 
UIButton?  (I presume that your for-loop preamble was just illustrative, since 
it seems atypical to assign buttons into a C array and without any 
target/action.)

> But these buttons are un-named, is it impossible to use
> constraintsWithVisualFormat now? e.g

Given your code, what about something like this:

NSString *format = @"|[button0][button1(==button0)][button2(==button0)]|";

NSDictionary *views = @{
@"button0" : buttons[0],
@"button1" : buttons[1],
@"button2" : buttons[2],
};

NSArray *constrants = [NSLayoutConstraint constraintsWithVisualFormat:format 
options:0L metrics:nil views:views];

b

--
Ben Kennedy, chief magician
Zygoat Creative Technical Services
http://www.zygoat.ca






___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Crash in libsystem_kernel.dylib`__workq_kernreturn:

2015-01-25 Thread Trygve Inda
I am getting a very weird, random crash in:

libsystem_kernel.dylib`__workq_kernreturn:
0x7fff8381de60:  movl   $0x2000170, %eax
0x7fff8381de65:  movq   %rcx, %r10
0x7fff8381de68:  syscall
0x7fff8381de6a:  jae0x7fff8381de74; __workq_kernreturn + 20
0x7fff8381de6c:  movq   %rax, %rdi
0x7fff8381de6f:  jmp0x7fff8381a175; cerror_nocancel
0x7fff8381de74:  retq
0x7fff8381de75:  nop
0x7fff8381de76:  nop
0x7fff8381de77:  nop

How can I track this down since it does not seem to be tied to anything
specific.

It does seem like if I remove a call to

NSData* imageData = [[self myImageRep]
representationUsingType:NSJPEGFileType properties:imageProperties];

It no longer crashes, but the crash happens 3-5 seconds after this call when
my program should be idle.

Thanks Never seen anything like this and have spent several hours trying
to track it down.

Trygve



___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

What's the right way to use UIActivityIndicatorView? After it's stopped

2015-01-25 Thread Aaron Lewis
Hi,

I'm trying to show another UI Control when the stopAnimation method is called.

But in xcode if I drag the UIActivityIndicatorView first, any other UI
Control seems to be replacing it.

Now it looked like I had to do create the other UI Control and add it
manually when the animation is stopped.

That is wrong right? What's the suggestion

-- 
Best Regards,
Aaron Lewis - PGP: 0x13714D33 - http://pgp.mit.edu/
Finger Print:   9F67 391B B770 8FF6 99DC  D92D 87F6 2602 1371 4D33
___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Binding to a view's model object

2015-01-25 Thread Sandor Szatmari
I think you can bring an object controller into your xib from the IB pallet.  
Bind the content object of the controller to your NSView subclass and expose 
the binding of modelObject.someStringProperty through the object controller's 
attributes inspector panel.  The all your subviews will bind to the object 
controller. This assumes you can make your NSView visible in IB through an 
NSObject IB widget.  Typically, I would have the model in a controller object 
or delegate object which are more common to materialize in the xib.

Sandor Szatmari

> On Jan 25, 2015, at 05:34, Roland King  wrote:
> 
> I have a xib with a top-level view and a bunch of subviews which represents 
> one view of a given model object. The top-level NSView subclass has a 
> readwrite property which is the model object of which it's a view. I thought 
> this was a pretty standard pattern, especially in OSX which only just 
> recently started to really make use of view controllers. 
> 
> Many of the subviews just show strings and other values from the model 
> object, and some of them allow editing as well. So what I wanted to do is use 
> bindings to bind modelObject.someStringProperty to the value of one of the 
> text fields, for instance. Doing that would take care of 90% of the easy 
> properties on the model, leaving just a few I'd need to hand-code. However IB 
> doesn't let me make bindings to a property of the top-level view. I can bind 
> to files owner, the shared defaults controller and the application only, or 
> to any other standalone Object I put in the NIB, but none of those help. 
> 
> The view in this case is going in a stack view, which wants an NSView. I 
> thought about moving the logic into a view controller which could be the 
> Files Owner, but I would have then to separately retain those view 
> controllers as their views don't retain them and the stackview just wants the 
> view, so that feels a little clunky. The views are meant to be reusable, 
> hence the single readwrite model object property on the view. 
> 
> Is there a way to do these bindings? Can it be done in IB if so or do I need 
> to call bind:toObject:withKeyPath:options: Is there some other object I could 
> put in the NIB which would intermediate this for me? 
> ___
> 
> 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:
> https://lists.apple.com/mailman/options/cocoa-dev/admin.szatmari.net%40gmail.com
> 
> This email sent to admin.szatmari@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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Binding to a view's model object

2015-01-25 Thread Jonathan Mitchell


> On 25 Jan 2015, at 10:34, Roland King  wrote:
> 
> I have a xib with a top-level view and a bunch of subviews which represents 
> one view of a given model object. The top-level NSView subclass has a 
> readwrite property which is the model object of which it's a view. I thought 
> this was a pretty standard pattern, especially in OSX which only just 
> recently started to really make use of view controllers. 
> 
I would embrace NSViewController and use -representedObject.
Bindings + MVC have an established track record  and it does correct memory 
management that can be tricky to get right otherwise.
Your pattern is not very MVC at the moment!

>  I can bind to files owner, the shared defaults controller and the 
> application only, or to any other standalone Object I put in the NIB, but 
> none of those help. 


You can if your file’s owner has an outlet for the top level view 
(NSViewController does of course):

myFilesOwner.myTopLevelView.myObject.myProperty

Jonathan
___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Adding constrains for anonymous buttons

2015-01-25 Thread Aaron Lewis
Hi,

I'm trying to create a "label group", so I decided to generate 3
buttons and put them in a single line, evenly sized and evenly spaced.

But these buttons are un-named, is it impossible to use
constraintsWithVisualFormat now? e.g

UIButton *buttons[3];
for (int i = 0; i < 3; ++ i)
{
buttons[i] = [[UIButton alloc] init];
}

Is there any suggestion?

-- 
Best Regards,
Aaron Lewis - PGP: 0x13714D33 - http://pgp.mit.edu/
Finger Print:   9F67 391B B770 8FF6 99DC  D92D 87F6 2602 1371 4D33
___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

[RESOLVED] Re: Trying to create a collection view with evenly distributed cell

2015-01-25 Thread Aaron Lewis
Thanks Mike,

I followed the tutorial and did the exact same thing in objc, works.

On Sun, Jan 25, 2015 at 6:21 PM, Mike Abdullah  wrote:
>
>> On 25 Jan 2015, at 10:12, Aaron Lewis  wrote:
>>
>> Hi,
>>
>> I'm trying to create a 3 cell per row collection, and I want no margin
>> (horizontally or vertically) between each cell.
>>
>> So in xcode I set Min Spacing For Cells / For Lines to 1, Indicator
>> insets (all 4 values) to 0, then I write code like this:
>>
>> - (NSInteger)collectionView:(UICollectionView *)collectionView
>> numberOfItemsInSection:(NSInteger)section {
>>
>>return 9;
>>
>> }
>>
>>
>> - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView 
>> *)collectionView
>>
>> {
>>
>>return 1;
>>
>> }
>>
>>
>> - (UICollectionViewCell *)collectionView:(UICollectionView
>> *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
>>
>>
>>
>>CollectionCell *cell = [collectionView
>> dequeueReusableCellWithReuseIdentifier:@"Cell"
>> forIndexPath:indexPath];
>>
>>
>>
>>[cell setFrame: CGRectMake (cell.frame.origin.x,
>>
>>cell.frame.origin.y,
>>
>>self.collectionView.frame.size.width / 3,
>>
>>cell.frame.size.height)];
>
> Time to back up and re-learn the basics of collection views. Collection views 
> are in charge of the layout of their cells, including sizing. You don’t get 
> to set the cell’s frame directly.
>
> Instead you want to set the collection view’s item size appropriate to match 
> the view’s width. This may help: 
> http://dativestudios.com/blog/2015/01/08/collection_view_layouts_on_wide_phones/
>>
>>
>>
>>cell.backgroundColor = [UIColor whiteColor];
>>
>>return cell;
>>
>> }
>>
>> If you run that code you will see the horizontal margin still exists
>> and is very huge compared to the vertical one.
>>
>> What's the correct way to do it?



-- 
Best Regards,
Aaron Lewis - PGP: 0x13714D33 - http://pgp.mit.edu/
Finger Print:   9F67 391B B770 8FF6 99DC  D92D 87F6 2602 1371 4D33

___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Binding to a view's model object

2015-01-25 Thread Keary Suska
On Jan 25, 2015, at 3:34 AM, Roland King  wrote:

> I have a xib with a top-level view and a bunch of subviews which represents 
> one view of a given model object. The top-level NSView subclass has a 
> readwrite property which is the model object of which it's a view. I thought 
> this was a pretty standard pattern, especially in OSX which only just 
> recently started to really make use of view controllers. 

There is nothing standard about this pattern. It is not, AFAIK, a pattern at 
all, but an anti-pattern. Previous to a view controller the only "view" 
controller was a window controller, and finer grained control was necessary. 
For this very purpose it is the view controller, and not its view, which tends 
to "hold" the model object. Hence Xcode is balking at your attempts.

> Many of the subviews just show strings and other values from the model 
> object, and some of them allow editing as well. So what I wanted to do is use 
> bindings to bind modelObject.someStringProperty to the value of one of the 
> text fields, for instance. Doing that would take care of 90% of the easy 
> properties on the model, leaving just a few I'd need to hand-code. However IB 
> doesn't let me make bindings to a property of the top-level view. I can bind 
> to files owner, the shared defaults controller and the application only, or 
> to any other standalone Object I put in the NIB, but none of those help. 

Yes--that's MVC. Views should only bind to controllers, not other views.

> The view in this case is going in a stack view, which wants an NSView. I 
> thought about moving the logic into a view controller which could be the 
> Files Owner, but I would have then to separately retain those view 
> controllers as their views don't retain them and the stackview just wants the 
> view, so that feels a little clunky. The views are meant to be reusable, 
> hence the single readwrite model object property on the view. 

Someone has to own the xib, why not have it serve up the model object? Or own 
the NSViewController(s) that do? These would represent standard patterns and 
don't seem clunky. Note, however, that objects of NSWindowController and 
NSViewController have some built-in binding break-down when they are released, 
and are usually more bindings-friendly.

> Is there a way to do these bindings? Can it be done in IB if so or do I need 
> to call bind:toObject:withKeyPath:options: Is there some other object I could 
> put in the NIB which would intermediate this for me? 

Well, it's hard to say since you haven't listed the items that you don't 
believe you can use bindings for, but in general, yes, more or less.

HTH,

Keary Suska
Esoteritech, Inc.
"Demystifying technology for your home or business"


___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Binding to a view's model object

2015-01-25 Thread Roland King
I have a xib with a top-level view and a bunch of subviews which represents one 
view of a given model object. The top-level NSView subclass has a readwrite 
property which is the model object of which it's a view. I thought this was a 
pretty standard pattern, especially in OSX which only just recently started to 
really make use of view controllers. 

Many of the subviews just show strings and other values from the model object, 
and some of them allow editing as well. So what I wanted to do is use bindings 
to bind modelObject.someStringProperty to the value of one of the text fields, 
for instance. Doing that would take care of 90% of the easy properties on the 
model, leaving just a few I'd need to hand-code. However IB doesn't let me make 
bindings to a property of the top-level view. I can bind to files owner, the 
shared defaults controller and the application only, or to any other standalone 
Object I put in the NIB, but none of those help. 

The view in this case is going in a stack view, which wants an NSView. I 
thought about moving the logic into a view controller which could be the Files 
Owner, but I would have then to separately retain those view controllers as 
their views don't retain them and the stackview just wants the view, so that 
feels a little clunky. The views are meant to be reusable, hence the single 
readwrite model object property on the view. 

Is there a way to do these bindings? Can it be done in IB if so or do I need to 
call bind:toObject:withKeyPath:options: Is there some other object I could put 
in the NIB which would intermediate this for me? 
___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Trying to create a collection view with evenly distributed cell

2015-01-25 Thread Mike Abdullah

> On 25 Jan 2015, at 10:12, Aaron Lewis  wrote:
> 
> Hi,
> 
> I'm trying to create a 3 cell per row collection, and I want no margin
> (horizontally or vertically) between each cell.
> 
> So in xcode I set Min Spacing For Cells / For Lines to 1, Indicator
> insets (all 4 values) to 0, then I write code like this:
> 
> - (NSInteger)collectionView:(UICollectionView *)collectionView
> numberOfItemsInSection:(NSInteger)section {
> 
>return 9;
> 
> }
> 
> 
> - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView 
> *)collectionView
> 
> {
> 
>return 1;
> 
> }
> 
> 
> - (UICollectionViewCell *)collectionView:(UICollectionView
> *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
> 
> 
> 
>CollectionCell *cell = [collectionView
> dequeueReusableCellWithReuseIdentifier:@"Cell"
> forIndexPath:indexPath];
> 
> 
> 
>[cell setFrame: CGRectMake (cell.frame.origin.x,
> 
>cell.frame.origin.y,
> 
>self.collectionView.frame.size.width / 3,
> 
>cell.frame.size.height)];

Time to back up and re-learn the basics of collection views. Collection views 
are in charge of the layout of their cells, including sizing. You don’t get to 
set the cell’s frame directly.

Instead you want to set the collection view’s item size appropriate to match 
the view’s width. This may help: 
http://dativestudios.com/blog/2015/01/08/collection_view_layouts_on_wide_phones/
> 
> 
> 
>cell.backgroundColor = [UIColor whiteColor];
> 
>return cell;
> 
> }
> 
> If you run that code you will see the horizontal margin still exists
> and is very huge compared to the vertical one.
> 
> What's the correct way to do 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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Trying to create a collection view with evenly distributed cell

2015-01-25 Thread Aaron Lewis
Hi,

I'm trying to create a 3 cell per row collection, and I want no margin
(horizontally or vertically) between each cell.

So in xcode I set Min Spacing For Cells / For Lines to 1, Indicator
insets (all 4 values) to 0, then I write code like this:

- (NSInteger)collectionView:(UICollectionView *)collectionView
numberOfItemsInSection:(NSInteger)section {

return 9;

}


- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView

{

return 1;

}


- (UICollectionViewCell *)collectionView:(UICollectionView
*)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{



CollectionCell *cell = [collectionView
dequeueReusableCellWithReuseIdentifier:@"Cell"
forIndexPath:indexPath];



[cell setFrame: CGRectMake (cell.frame.origin.x,

cell.frame.origin.y,

self.collectionView.frame.size.width / 3,

cell.frame.size.height)];



cell.backgroundColor = [UIColor whiteColor];

return cell;

}

If you run that code you will see the horizontal margin still exists
and is very huge compared to the vertical one.

What's the correct way to do it?


-- 
Best Regards,
Aaron Lewis - PGP: 0x13714D33 - http://pgp.mit.edu/
Finger Print:   9F67 391B B770 8FF6 99DC  D92D 87F6 2602 1371 4D33
___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Detecting Managed Object Property Change From Undo Redo

2015-01-25 Thread Mike Abdullah

> On 25 Jan 2015, at 06:35, Richard Charles  wrote:
> 
> Core Data generated primitive accessors are used to get and set values from 
> and to the managed object's private internal store. Core Data generated 
> primitive accessors do not have change notification. If primitive accessors 
> are present, Core Data will use them during undo and redo.
> 
> A managed object may have resources that need to be updated when a property 
> changes. During undo and redo primitive accessors are used to change the 
> property but because primitive accessors do not have change notification 
> there is no way for the managed object to be notified that the property has 
> changed.
> 
> The only solution seems to be to use custom primitive accessors that have 
> change notification.
> 
> What am I doing wrong?

You are mistaken. Core Data *does* fire KVO notifications during undo/redo. Its 
internal implementation does something along these lines:

[object willChangeValueForKey:key];
[object setPrimitiveValue:previousValue forKey:key];
[object didChangeValueForKey:key];


___

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com