Thanks Robert and Quincey, that's very helpful!


Op May 29, 2013, om 8:26 AM heeft Quincey Morris 
<quinceymor...@rivergatesoftware.com> het volgende geschreven:

> On May 28, 2013, at 23:37 , Diederik Meijer | Ten Horses 
> <diede...@tenhorses.com> wrote:
> 
>> 1. With ARC, do we still have to worry about string1 leaking in the 
>> following scenario?
>> 
>> @property (nonatomic, copy) NSString *string1;
>> …..
>> self.string1 = @"Hello";
>> string1 = @"Hello hello";
>> string1 = @"Hello hello hello";
> 
> No, you don't have to worry. When dealing with objects, ARC handles all 
> retain/release correctly, regardless of whether the assignment is to the 
> property or the ivar. That's kinda the point.
> 
>> 2. How do the strong, copy and weak keywords in the property declaration 
>> affect this?
> 
> ARC still does the right thing, whether you use the ivar or the setter.
> 
> The "ownership" keyword is multi-purpose (unfortunately, IMO):
> 
> 1. It defines the ownership attribute of a synthesized ivar (or must match 
> the ownership attribute of a manually declared ivar). For this, copy is the 
> same as strong.
> 
> 2. It defines the behavior of a synthesized setter. For this, copy makes a 
> copy, everything else just does an assignment (with the appropriate memory 
> management according to the ivar ownership attribute).
> 
> 3. It declares the ownership attribute of the property itself, separately 
> from the ivar. For this, strong and copy represent a strong property; weak 
> represents a weak property; __unsafe_unretained represents no ownership. 
> However, the property's ownership attribute has no actual effect on the 
> compiler. Everything the compiler does via synthesis is covered under #1 and 
> #2.
> 
> Note that #1 and #2 are in truth private implementation details of the class. 
> #3 is the public API contract, and communicates to clients of the class 
> whether the property takes ownership of the property value.
> 

_______________________________________________

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

Reply via email to