我正在尝试控制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/