-2
-(id)initWithUserSettings:(id)userSettings mqttSender:(id)sender;

    NSDictionary *settings3=[[NSDictionary alloc] initWithContentsOfFile:@"/var/mobile/Library/Preferences/myfilehere.plist"];

        if ([[settings3 objectForKey:@"invisiblechat"] boolValue]){

        return NULL;

        }

        else{%orig;}

    [settings3 release];

    }

このコードが正しいかどうかわかりません。2 日間検索しても答えがありません。-(void) では、このコードは非常にうまく機能し、objecForKey が無効になるまで -(void) を無効にします。私が望むのは、(id)mqttSender をトグルで無効/有効に保つことですが、それはできません。何か助けてください。

4

1 に答える 1

0

説明から何を達成しようとしているのかよくわかりませんが、NSObjectのサブクラスであるクラスを初期化する場合は、少なくとも[super init]を呼び出して、自分自身を返す必要があります。メソッドはそのオブジェクトへの参照を取得できません。

'void'の戻り値を設定することは、メソッドが何も返さないことを意味します。'id'を設定すると、'id'は定義していない値を表すため、ほぼすべての値になります。

メソッドでは、戻り値'id'を設定しています。これは、そのメソッドから何かを返す必要があることを意味します。現時点では、'if'ステートメント内に単一の戻り値がありますが、その後、メソッドはオープンエンドであり、何も返しません。この場合、Xcodeはコンパイルエラーをスローします。これは、何も返さず、メソッドがnilであっても、少なくとも何かがメソッドから出力されることを期待しているためです。

もう1つ:メソッド/関数を定義するときは、メソッドの減速をセミコロンで終了するだけです。メソッド/関数を実装するときは、コードを含む中括弧でフォローしているため、セミコロンは必要ありません。そのメソッド/関数のために。

于 2013-03-19T20:58:42.803 に答える