-3

過去に Java と C でプログラミングした経験があるので、Objective-C を理解しようとしています。

次のメソッドを含む Unzip クラスがあります。

- (void)unzipFile:(NSString*)fileName

Unzip のインスタンスを作成し、文字列値で unzipFile メソッドを呼び出す次のコードを使用して、ボタンのクリックに応答するために AppDelegate クラスからこのメソッドを呼び出そうとしていますが、何も起こりません。

- (IBAction)unzipIt:(id)sender {
    NSLog(@"Unzip clicked");
    NSString *zipString = [_testField stringValue];

    NSLog(@"Calling unzip with the string %@", zipString);
    Unzip *unzip;
    [unzip unzipFile:(zipString)]; 
}

2 つの最初の NSLog が表示されるため、実際のボタン クリックは機能しますが、それ以上は何も起こりません。他の場所でテストしたので、この方法は問題ないので、少なくとも何かが起こるはずです。どこが間違っているのか誰か教えてください。

御時間ありがとうございます。

4

2 に答える 2

3

割り当てませんでしたUnzip:

Unzip *unzip = [[Unzip alloc] init];
[unzip unzipFile:zipString];

機能していないのに爆発しない理由は、目的の C にあるため、 にメッセージを送信しても安全nilです。

Objective C に関するその他の概念、特にNilの操作セクション。

于 2013-03-17T16:22:38.907 に答える
0

unzip変数を初期化する必要があります

Unzip *unzip = [[Unzip alloc] init];

ショートカットもあります:

Unzip *unzip = [Unzip new];

これは同等の略記です。

于 2013-03-17T16:20:54.893 に答える