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
606 views
in Technique[技术] by (71.8m points)

memory management - Returning objects from methods in Objective-C

Please clarify, how to deal with returned objects from methods?

Below, I get employee details from GeEmployeetData function with autorelease,

  1. Do I have to retain the returned object in Process method?
  2. Can I release *emp in Process function?

    -(void) Process { Employee *emp = [self GeEmployeetData] }

    +(Employee*) GeEmployeetData{

    Employee *emp = [[Employee alloc]init]; //fill entity

    return [emp autorelease]; }

See Question&Answers more detail:os

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

1 Reply

0 votes
by (71.8m points)

99% of the time you should retain autoreleased objects returned from other methods if you want to keep them around.

With autoreleased objects, when the pool is drained, the objects in the pool get sent the release message. That is why 99% of the time you will want to retain autoreleased objects, because the chances of you getting an object with a retainCount of more than 1 is highly unlikely.


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

...