Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
531 views
in Technique[技术] by (71.8m points)

objective c - Properties in dealloc: release then set to nil? or simply release

I'm new to Objective-C (and stackoverflow) and I'm a little turned around about best practices with regards to properties.

My understanding is that when you're completely done with a property you can avoid bugs by releasing them and then immediately setting to nil so that subsequent messages also return nil instead of an exception.

[myProperty release], myProperty = nil;

However, when it comes to dealloc for 'copy' and 'retain' properties is there any need to do both? or does a simple

[myProperty release] cut it? Also, am I correct that I don't need to release 'assign' properties in dealloc?

Thanks!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Do release, but don't bother setting to nil. Setting to nil via your @synthesized setter:

self.myProperty = nil

will release your old value as part of the reassignment (though as noted in the comments, may have unwanted side effects), but simply assigning nil to your member variable:

myProperty = nil

will not.

[myProperty release]

is all you need.

(and you are correct about "assign" properties.)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...