2012-03-10 5 views
0

質問#1 NSStringFromCGPoint()は自動解放オブジェクトを返すか、オブジェクトを解放する必要がありますか?NSStringFromCGPointはオートレリースオブジェクトを返しますか?

質問#2 にあなたが持っているプロパティ:@property (nonatomic, retain) NSString *someString; をそして、あなたがそうのように設定します。self.someString = [[[NSStringのはalloc] initWithString: "何か"]自動リリース@]。

はこれです:

self.someString = nil; 

答えて

1
  1. に等しい

    [someString release]; 
    someString = nil; 
    

    私は、特に1つをチェックしていないが、慣例により機能のそれらの種類は、自動解放オブジェクトを返します。最小限のARC以外のプロジェクトを設定し、関数から何を得るのかを-retainCountと呼ぶことで、これを自分でテストすることができますが、わかりません。 (そして一般に、retainCountはあなたが使いたいものではありません)

  2. はい。合成されたセッターのようなものになります。

    だから、
    - (void)setSomeString:(NSString *)string 
    { 
        if (string != someString) { 
         [someString release]; 
        } 
        someString = [string retain]; 
    } 
    

を、明示的またはドット表記を使用してそれを呼び出すかどうか、古い値が解放されます(基礎となるIVARはnilまたは何でもあなたが合格に設定されます) 。

また、あなただけのランダムな例のためにそれをやっていた場合、私はわからないんだけど、あなたは、プロパティアクセサにそれを渡すために、メモリ管理コードで文字列リテラルをラップする必要はありません。 (つまり、self.someString = @"Something"は問題ありません)

+2

(http://www.friday.com/bbum/2011/12/18/retaincount-is-useless/)[ 'retainCount'を使用しないでください]。決して。これまで決してこれまでにない。ユニコーンが泣き、子猫が傷つくでしょう。それをしないでください。 –

+0

あなたの明確な答えをいただきありがとうございました。私はあなたが見るようにそれを受け入れました。 – Mark

+0

ユニコーンの涙で子猫を癒すことはできませんか? =/ – JustSid

1

「new」、「alloc」、「copy」、または「create」という用語が含まれていますか?そうでない場合は、自分が所有していないオブジェクトが戻ってきます(オートレリースされているか、リファレンスが別の場所にあると想定するかもしれません)。

関連する問題