所以,我是新來調整開發和OBJ C和我試圖改變塢的風格與此代碼我的代碼有什麼問題? (OBJçTWEAK發展)
%hook SBWallpaperEffect
-(void)setStyle: (NSInteger)arg1{
arg1 = 5;
}
%end
但它不工作。我究竟做錯了什麼?
所以,我是新來調整開發和OBJ C和我試圖改變塢的風格與此代碼我的代碼有什麼問題? (OBJçTWEAK發展)
%hook SBWallpaperEffect
-(void)setStyle: (NSInteger)arg1{
arg1 = 5;
}
%end
但它不工作。我究竟做錯了什麼?
好吧,所以我想通過使用NSInteger即時消息,而不是漫長的。就像這樣:
- (void)setStyle:(long long)arg1;
而且,我是使用
SBWallpaperEffect
而不是
SBWallpaperEffectView
,我應該已經設置%原稿中的數值
所以,這是編寫它的正確方法:
%hook SBWallpaperEffectView
- (void)setStyle:(long long)arg1{
arg1 = 5;
%orig(arg1);
return;
}
%end
好吧,我認爲這是許多程序員面對的典型指針問題。您正在向函數傳遞一個NSInteger
,並且arg1
是傳入的值的一個copy
。換句話說,無論您如何在函數內部更改arg1
,原始變量都不會更改。
爲了讓事情更加清楚,看看下面的代碼片段:
NSInteger myInteger = 0;
NSInteger arg1;
arg1 = myInteger;
arg1 = 5;
// myInteger is still 0!
更改arg1
不會改變的myInteger
的價值,這就是你在你的函數做什麼。 arg1
複製傳入的整數值,設置爲5,然後在函數結束時釋放。
相反,試試這個:
-(void)setStyle:(NSInteger *)arg1{
arg1 = 5;
}
,然後調用該函數是這樣的:
NSInteger myInteger = 0;
[self setStyle:&myInteger];
//myInteger is now 5!
現在你會得到你想要的結果。
如果你不想處理這些亂七八糟的東西的指針,用函數的返回值傳遞這樣的數字:
-(NSInteger)getStyle:(NSInteger)arg1{
// do some calculation
arg1 += 5;
return arg1;
}
或像這樣(不帶參數):
-(NSInteger)getStyle{
return 5;
}
,並調用它像:
myInteger = [self getStyle:myInteger];
// or
myInteger = [self getStyle];
現在myInteger
也將b e 5.希望這有助於:)
您可以添加更多線索來解決問題嗎?你的函數' - (void)setStyle:(NSInteger)arg1 {arg1 = 5; }是真的。 –
@CuongNguyen這是我所有的代碼,我設置爲arg1的數字5應該是將底座樣式更改爲更柔和的模糊,或者如果將其更改爲14,則它會像noctis一樣黑暗。但我的代碼不起作用。它適用於flex tho – Saeed