2

重複の可能性:
このエラーが発生します 'autorelease' is available: not available in automatic reference count mode

私は、2011 年に発行された Objective-C の基礎と呼ばれる本で Objective-C を学んでいます。この本は、iOS の概念を紹介し、Objective-C 言語を教えるシンプルなアプリを構築しています。本の出版以来、プラットフォームまたは言語にいくつかの変更があったようです. この本からコードを作成しようとすると (以下に抜粋された重要な箇所)、次のエラーが発生します。

autorelease is unavailable: not available in automatic reference counting mode
ARC forbids explicit message send of 'autorelease'

エラー メッセージは、コード内で autorelease が実際に使用されている数行上に表示されます。

私は Objective-C と iOS で約 1 時間の経験しかないので、これを修正する方法がわからないので、本を読み進めることができます。どんな助けでも大歓迎です。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView
                             dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil){                        #### error message here
        cell = [[[UITableViewCell alloc]
                initWithStyle:UITableViewCellStyleDefault
                 reuseIdentifier:CellIdentifier]autorelease];  ### autorelease used here
    }
    cell.textLabel.text = [NSString
                           stringWithFormat:@"Rental Property %d", indexPath.row];
    NSLog(@"Rental Property %d", indexPath.row);
    return cell; 
}

このような小さな問題を解決できなければ、本に沿って進めることはできません。この種の問題を回避するために使用できる何らかのバージョン システム (Ruby の rvm など) がある場合は、お知らせください。

4

2 に答える 2

7

1 時間しか経っていない場合は、再起動することをお勧めします。

Xcode には、自動参照カウントと呼ばれる Objective-C プロジェクトをビルドするための機能があります。あなたの本はそれを使用していません。

再起動したら、ウィザードを使用してプロジェクトを作成するときに細心の注意を払ってください。を確認する必要があります。

自動参照カウントを使用する

選択されていません。

于 2012-12-27T00:37:51.300 に答える
2

iOSの高度なメモリ管理ガイドをお読みください。これは素晴らしい読み物であり、今後 ARC を使用する場合でも、理解するのに役立ちます。それを理解する必要があるシナリオはまだあります。

autorelease は、手動のメモリ管理の一部です。

iOS 5 の後半では、ARC (自動参照カウント) が追加され、メモリを手動で管理する必要がなくなりました。

マニュアルと ARC を比較した記事を次に示します。

于 2012-12-27T00:36:13.520 に答える