Tweak.xm 开发怎么引用self.navigationController

不写 bug 怎么撩测试小姐姐

大佬就是牛逼
大佬继续之前问题
[[%c(BaseMsgContentViewController) alloc]init]
具体代码如下

@interface BaseMsgContentViewController:UIViewController

@end

%hook BaseMsgContentViewController

-(void)viewDidAppear:(BOOL)animated
{
%orig;
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@“这是测试” message:
[NSString stringWithFormat:@"%@",self.title]
delegate:self cancelButtonTitle:@“OK” otherButtonTitles: nil];
[alert show];
[alert release];

}

%end

%hook NewMainFrameViewController

-(void)viewDidLoad
{
%orig;

BaseMsgContentViewController *vc = [[%c(BaseMsgContentViewController)  alloc]init];

// UIViewController *vc =[[UIViewController alloc]init];

vc.title = @"sssss";

vc.view.backgroundColor = [UIColor redColor];

[[self navigationController] pushViewController:vc animated:YES];

}

%end
但是在 BaseMsgContentViewController 的 viewDidAppear 打印出来的 self.title 是null
如果把BaseMsgContentViewController换成UIViewController后就可以打印出self.title

请问大佬 我那边有出问题了

这就是业务问题了,自己逆向吧

那我这样的语法有问题吗

没问题吧,UIViewController 都可以

@interface NewMainFrameViewController
{
MMMainTableView *m_tableView;
}

@end

大佬问下 这种属性的在Tweak.xm怎么使用
self->m_tableView 我用这个时候 会报错 请大神指点

大佬有空帮我看这个贴最后一个问题可以不
@interface NewMainFrameViewController
{
MMMainTableView *m_tableView;
}

@end

就是 在{ }里受保护的参数怎么在.xm中调用 谢谢

MMTableView *tableView = [self valueForKey:@"m_tableView"];

报这个错误

@interface NewMainFrameViewController : UIViewController

@end

谢大佬 膜拜 大佬收下的膝盖

MSHookIvar也行

Usage MUHook to set and get ivar

#import "MUHook.h"

//	Get ivar value
//	取实例变量
NSString *name = MUHIvar(instance, _name);

//	Set ivar value
//	设置实例变量
MUHIvar(instance, _name) = @"New Name";


紫薯布丁

@interface NewMainFrameViewController : UIViewController
@property(strong,nonatomic)NSArray *list;
@end

@property(strong,nonatomic)NSArray *list;
是我自己添加新的属性 怎么一点用就崩了 大佬我这写法哪里错了

查看崩溃日志

@interface NewMainFrameViewController : UIViewController
@property(strong,nonatomic)NSArray *list;
@end
%hook NewMainFrameViewController
。。。
%end

-[NewMainFrameViewController setList:]: unrecognized selector sent to instance 0x10d12de00

*** Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘-[NewMainFrameViewController setList:]: unrecognized selector sent to instance 0x10d12de00’

*** First throw call stack:

(0x18fb441c0 0x18e57c55c 0x18fb4b278 0x18fb48278 0x18fa4259c 0x10ce6f570 0x19598d3dc 0x195a46fcc 0x195a46ea4 0x195a461ec 0x195a45c38 0x195a457ec 0x195a45750 0x19598a54c 0x192e5240c 0x192e470e8 0x192e46fa8 0x192dc3c64 0x192deb0d0 0x192debaf0 0x18faf17dc 0x18faef40c 0x18fa1e068 0x1959f85dc 0x1959f3360 0x1001afd2c 0x18ea005b8)

日志是这样的 找不到这个属性

是不是我这样写的想法是错的 如果要这样给 UIViewController 添加给属性要怎么写

@interface NewMainFrameViewController : UIViewController
@end
NSArray *list;
%hook NewMainFrameViewController
。。。
%end
我尝试过不写在 UIViewController 中添加属性 直接写在Tweak.xm中是可以的
不过这样写 我不确定这样写后 list 的周期性 什么时候销毁 还有是不是只能这么写

这个类是dump出来的还是你自己定义的?

还有这个方法是hook原来的方法,还是新增的方法,新增方法%new

试试用这个的setter方法来赋值你的list