所以,我是新手调整开发和obj c而我正试图用这段代码改变dock的样式
%hook SBWallpaperEffect
-(void)setStyle: (NSInteger)arg1{
arg1 = 5;
}
%end
但它不起作用。我做错了什么?
答案 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