-1

Objective-Cのメモリ管理について混乱しました。例:

.h file
@property(nonatomic,retain) NSString *myString;

.m file
@synthesize myString
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [arrayString count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

  //in this case,i have to check 
  if(self.myString != nil)
        [myString release],self.myString = nil;
  //and assign 
  self.myString = [arrayString objectAtIndex:indexPath.row];
  //or i need only assign 
  self.myString = [arrayString objectAtIndex:indexPath.row];
}

誰かが私に説明できますか?本当にありがとう。

4

3 に答える 3

2

nil文字列..を割り当て、deallocandviewDidUnloadメソッドでそれを解放/割り当てる必要があります。

于 2012-07-05T15:04:30.017 に答える
0
 if(self.myString != nil){
        [myString release],self.myString = nil;
 }

これで十分です:

  if(self.myString != nil){
            self.myString = nil;
     }

あなたの質問に関しては、あなたはこれだけを必要とします:

  self.myString = [arrayString objectAtIndex:indexPath.row];
于 2012-07-05T15:06:11.483 に答える
0

プロパティは「保持」として定義されているため、解放する必要はありません。つまり、前のオブジェクトを解放した後、渡されたオブジェクトを保持します。

プロパティにアクセスする代わりに、変数を直接使用する場合は、リリース/保持を手動で管理する必要があります。

ところで:あなたはnilオブジェクトにメッセージを送ることができます...(それでそれを解放することはnilであることをチェックせずに)

于 2012-07-05T15:06:20.113 に答える