あなたの場合、あなたはあなたがフックしているクラスのインスタンス変数を使おうとしているようです。インスタンス変数の変更は、微調整ではそのようには機能しません。MSHookIvarを使用して、インスタンス変数(別名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やフロートなどをフックすることもできます。
exampleVariableHooked = MSHookIvar<BOOL>(self, "_someBOOL");
それはsubsite.hで宣言されているので、それをインポートする必要があります。そうしないと、微調整をコンパイルできません。また、ボーナスのヒントとして、フックしているアプリ/フレームワークの識別子をtweakname.plistに入力する必要があることをお知らせします。
したがって、変数を「フック」した後、ニーズに合わせて変数を変更できます。ハッピーコーディング!