objective-c - theos mobilesubstrate 调整中的 id 对象,我无法禁用此 -(id)

标签 objective-c c theos cydia-substrate

-(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];

    }

我不知道这个代码是否正确,我搜索了两天没有答案。在 -(void) 上,这段代码工作得非常好,并且它保持 -(void) 禁用,直到 objecForKey 被禁用。我想要的是通过切换保持 (id)mqttSender 禁用/启用,但我无法做到这一点。请问有什么帮助吗?

最佳答案

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

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

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

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

关于objective-c - theos mobilesubstrate 调整中的 id 对象,我无法禁用此 -(id),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15509700/

相关文章:

objective-c - 在 iOS8 中使用 UISplitViewController 隐藏主视图 Controller

c - 全局声明是在栈中还是堆中?

c - 在不关闭 MATLAB 的情况下停止 mex 函数 (C)

c - 我如何在 GTK+ 中使用 GtkPlug/GtkSocket

ios - UIWebView 的后退按钮

ios - 如何在微调中使用 OpenEars?

ios - 如何改变 storyboard 中 tableHeaderView 的高度?

ios - 是否可以有一个带有两个 UITableView 的 UIViewController,以及两个相应的 NSFetchedResultsController?

ios - Objective C 中两个数组中的字符串搜索

ios - 链接第 3 方框架时,theos tweak 未加载到应用程序中