我正在尝试控制Messages App中的主题行。现在,我只是想在“主题”字段中显示文本。

我的主要问题是让编译器将_subjectLine识别为有效 View 。如果我尝试对_subjectLine做任何事情,这就是我得到的:

Tweak.xm:8: error: ‘_subjectLine’ was not declared in this scope

我不知道如何声明已存在的项以进行调整。我在Xcode中使用的标准声明(通常在头文件中找到)似乎不起作用。

我已经在谷歌周围搜索了大约一个星期。我发现的最常见的教程或信息只是做的很简单:方法激活时–显示警报。我可以做到,没问题。但是,我需要使用一个已经存在的对象。

最佳答案

在您的情况下,您似乎正在尝试使用要钩接的类的实例变量。修改实例变量无法通过这种方式进行调整。您必须使用MSHookIvar来“ Hook ”一个实例变量(又名ivar)。例子:

[Tweak.xm/mm]

#import <substrate.h> // necessary
#import <Foundation/Foundation.h>

@interface TheClassYouAreHooking : NSObject {
    NSString *_exampleVariable;
}
- (void)doSomething;
@end

NSString *_exampleVariableHooked;

%hook TheClassYouAreHooking
- (void)doSomething
{
    // 'Hook' the variable

    exampleVariableHooked = MSHookIvar<NSString *>(self, "_exampleVariable");

    // The name of the hooked variable does not need to be the same

    exampleVariableHooked = @"Hello World";

    // You can do ANYTHING with the object Eg. [exampleVariableHooked release];

}
%end

MSHookIvar也可以钩住BOOL和floats之类的东西。
exampleVariableHooked = MSHookIvar<BOOL>(self, "_someBOOL");

它在strategy.h中声明,因此您需要导入,否则将无法编译您的调整。另外,我想提醒您,您必须将要挂接的应用程序/框架的标识符放入tweakname.plist中。

因此,在“挂接”变量之后,可以对其进行更改以适合您的需求。祝您编码愉快!

关于ios - Theos : Trying to take over UIView _subjectLine from CKContentEntryView in ChatKit,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11918934/

10-14 22:35