問題を確認するためにiPhoneアプリケーションでスキャンビルドコードアナライザを実行する端末で実行するスクリプトがあります。私は、deallocメソッドで解放されていないIBOutlet ivarを見つけられないインスタンスが少なくとも1つ存在するという事実に気づいただけです。端末からのiPhone静的コード解析で欠落したivarのリリースが見つからない
は、ここで私は、ターミナルから実行するコマンドの内容です:
#!/bin/sh
cd /Developer/svn/MyCompany/iPhone/MyApplication
scan-build -analyzer-check-dead-stores -analyzer-check-llvm-conventions -analyzer-check-objc-mem -analyzer-check-objc-methodsigs -analyzer-check-objc-missing-dealloc -analyzer-check-objc-unused-ivars -analyzer-check-security-syntactic --experimental-checks -k -V -o scan-reports xcodebuild -configuration Debug -sdk iphonesimulator4.2 clean build
私はチェッカーの非常に最新バージョンに更新しているので、チェッカーの新しいバージョンがあることをすることはできません。 .mファイルの関連部分がここにいる
@interface LoginWizardUsernameViewController : UIViewController <UITextFieldDelegate, GetUserExistsDidFinish> {
IBOutlet UITextField *username;
IBOutlet UIActivityIndicatorView *activityIndicatorView;
}
@property (nonatomic, retain) UITextField *username;
@property (nonatomic, retain) UIActivityIndicatorView *activityIndicatorView;
そして:ここに私のクラスの.hファイルの関連部分がある
あなたが見ることができるように// lots o' code omitted here
@implementation LoginWizardUsernameViewController
@synthesize username;
@synthesize activityIndicatorView;
- (void)dealloc
{
[super dealloc];
}
、何のリリースはありません2つのIBOutlet項目がありますが、プロパティ定義に保持されているとしても、何らかの理由でチェッカーが表示されません。奇妙なことは、私が他のクラスの.mファイルに行き、deallocメソッドでリリースをコメントアウトして、問題のスキャンの最後にスキャンビルドがうれしく知らせることです。私はこの特定の状況について何が違うのか分かりません。
更新:この問題のバグレポートを提出しました。 http://llvm.org/bugs/show_bug.cgi?id=8838 –
私はお金の上で、プロパティとしてクラスのNSString保持アイテムを追加しました。 IBOutlets。ありがとう。 –
私に結果を知らせてくれてありがとう ':)' –