我的代码出了什么问题? (obj c tweak开发)

时间:2017-04-21 04:35:19

标签: ios objective-c tweak

所以,我是新手调整开发和obj c而我正试图用这段代码改变dock的样式

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

但它不起作用。我做错了什么?

2 个答案:

答案 0 :(得分:0)

好吧,我认为这是许多程序员面临的典型指针问题。您正在将NSInteger传递给该函数,并且arg1是传入的值的copy。换句话说,无论您如何更改arg1内部的NSInteger myInteger = 0; NSInteger arg1; arg1 = myInteger; arg1 = 5; // myInteger is still 0! 功能,原始变量不会改变。

为了更清楚,请查看以下代码段:

arg1

更改myInteger不会更改arg1的值,也不会更改您在函数中执行的操作。 -(void)setStyle:(NSInteger *)arg1{ arg1 = 5; } 复制传入的整数的值,设置为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

现在var mydate="24-04-2017" var IsDate=new Date(mydate).toISOString(); console.log('my iso date',IsDate); 也将是5.希望这有助于:)

答案 1 :(得分:0)

好的,所以我发现我使用的是NSInteger而不是很长。像这样:

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

另外,我正在使用

  

SBWallpaperEffect

而不是

  

SBWallpaperEffectView

我应该在%orig

中设置值

所以,这是写它的正确方法:

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