2017-04-21 33 views
0

所以,我是新來調整開發和OBJ C和我試圖改變塢的風格與此代碼我的代碼有什麼問題? (OBJçTWEAK發展)

%hook SBWallpaperEffect 
-(void)setStyle: (NSInteger)arg1{ 
    arg1 = 5; 
} 
%end 

但它不工作。我究竟做錯了什麼?

+0

您可以添加更多線索來解決問題嗎?你的函數' - (void)setStyle:(NSInteger)arg1 {arg1 = 5; }是真的。 –

+0

@CuongNguyen這是我所有的代碼,我設置爲arg1的數字5應該是將底座樣式更改爲更柔和的模糊,或者如果將其更改爲14,則它會像noctis一樣黑暗。但我的代碼不起作用。它適用於flex tho – Saeed

回答

0

好吧,所以我想通過使用NSInteger即時消息,而不是漫長的。就像這樣:

  • (void)setStyle:(long long)arg1;

而且,我是使用

SBWallpaperEffect

而不是

SBWallpaperEffectView

,我應該已經設置%原稿中的數值

所以,這是編寫它的正確方法:

%hook SBWallpaperEffectView 
- (void)setStyle:(long long)arg1{ 
    arg1 = 5; 
    %orig(arg1); 
    return; 
} 
%end 
+0

最後的'return;'是多餘的。 – FireMango

+0

@FireMango哦,是的,我忘了刪除它,當我測試它thx – Saeed

0

好吧,我認爲這是許多程序員面對的典型指針問題。您正在向函數傳遞一個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.希望這有助於:)

+0

我得到的錯誤:使用未聲明的標識符'自我' – Saeed

+0

我仍然得到使用未聲明的標識符'自我'錯誤 – Saeed

+0

所以我看着sdk,這是我發現: - (void)setStyle :(long long)arg1;任何方式來設置arg1的值? – Saeed