-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) 上,此代码工作得非常好,它会一直禁用 -(void),直到禁用 objecForKey。我想要的是通过切换保持 (id)mqttSender 禁用/启用,但我做不到。请问有什么帮助吗?

4

1 回答 1

0

我不太确定你想从你的解释中实现什么,但如果你要初始化一个作为 NSObject 子类的类,你至少需要调用 [super init] 并返回 self,如果你不调用 init 的话方法将无法获得对该对象的引用。

将返回值设置为“void”意味着该方法不应返回任何内容,如果您设置了“id”,则“id”代表您尚未定义的值,因此它几乎可以是任何值。

使用您的方法,您正在设置“id”的返回值,这意味着您应该从该方法返回一些东西。目前,您的“if”语句中有一个 return,但之后您的方法是开放式的,并且不会返回任何内容。在这种情况下,Xcode 会抛出一个编译错误,因为你没有返回任何东西,并且它期望至少有一些东西从方法中出来,即使它是 nil。

另一件事:在定义方法/函数时,您只用分号结束方法减速,当您实现方法/函数时,您不需要分号,因为您使用包含您的代码的花括号对于该方法/功能。

于 2013-03-19T20:58:42.803 回答