2017-04-21 11 views
0

그래서, 내가 개발 및 OBJ C를 조정할하는 새로운 그리고 난이 코드내 코드에 어떤 문제가 있습니까? (OBJ C 팅겨 개발)

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

와 도크의 스타일을 변경하기 위해 노력하고있어하지만이 작동하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

더 많은 단서를 추가하여 문제를 해결할 수 있습니까? 당신의 함수'- (void) setStyle : (NSInteger) arg1 { arg1 = 5; }'사실입니다. –

+0

@CuongNguyen 이것은 모든 코드입니다. 숫자 5는 arg1로 설정하여 도크 스타일을 부드럽게 흐리게 변경하거나 14로 변경하면 noctis처럼 어둡게 만들었습니다. 하지만 내 코드는 작동하지 않습니다. 그것은 플렉스 tho에서 작동합니다 – Saeed

답변

0

좋아, 그래서 메신저는 NSInteger를 long long 대신 사용했다. 이처럼 : 또한

  • (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 오, 네, 내가 그것을 테스트했을 때 그것을 제거하는 걸 깜빡 했어. – Saeed

0

오케이, 이것이 많은 프로그래머가 직면하는 일반적인 포인터 문제라고 생각합니다. NSInteger을 함수에 전달하고 arg1은 전달되는 값의 copy입니다. 즉, 함수 내에서 arg1을 어떻게 변경하더라도 원래 변수는 변경되지 않습니다.

NSInteger myInteger = 0; 
NSInteger arg1; 
arg1 = myInteger; 
arg1 = 5; 
// myInteger is still 0! 

arg1myInteger의 값을 변경하지 않고 변경, 그것은 당신이 당신의 기능에서하고있는 작업은 다음과 같습니다

다음과 같은 코드를 보면, 일을 더 명확하게합니다. 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; 
} 

또는 (매개 변수없이)이 같은 :

myInteger = [self getStyle:myInteger]; 
// or 
myInteger = [self getStyle]; 

을 지금 myInteger B도됩니다

-(NSInteger)getStyle{ 
    return 5; 
} 

하고 싶은 전화 e 5. 도움이 되었으면 좋겠다.

+0

나는 오류가 발생합니다 : 선언되지 않은 식별자 '자체'의 사용 – Saeed

+0

아직 선언되지 않은 식별자 '자체'오류 ​​ – Saeed

+0

의 사용 그래서 내가 sdk 보았다 그리고 이것은 내가 무엇을 발견입니다 : - (void) setStyle : (long long) arg1; arg1에 대한 값을 설정하는 방법은 무엇입니까? – Saeed