我已经覆盖了UINavigationBar的drawRect以显示自定义背景(放置在类别或调配中).在iOS 5中,它不起作用.我该怎么办?
假设我们可以在运行时更改Localizable.strings,它放在NSBundle中.在当前时刻,即使我们更改它的内容,NSLocalizedString也会返回旧的(缓存)值.
我已经尝试过的:
我不能做什么(根据定义): - 我不能调和[NSBundle localizableStringForKey:value:table] - 我不能改变宏 - 一般来说,我不能影响任何原始项目代码,只在第4步添加一些东西
这仅用于开发目的.所以,我不需要在AppStore中发布它,所以任何私有方法或解决方案都可以.
所以,问题是.可能有人知道这样做的方法,还是有人给我另一个想法怎么做呢?谢谢.
我想要实现Xcode 3中的"修复和继续功能".
背景:
主要思想是:当我需要"快速修复某些东西"时,我不会重新编译,投射.我正在Attacker class
使用'updated'方法实现编译小,将其加载到内存中并替换incorrect
在运行时实现的VictimClass方法.我认为这个方法可以更快地完成整个项目的重新编译.
当我完成修复时,我只是将Attacker class
方法的来源复制到Victim class
.
问题
目前,我不知道如何[super ...]
在Attacker类中正确调用.
例如,我有VictimClass
@interface VictimClass : UIView @end
@implementation VictimClass
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
}
@end
@interface AttackerClass : NSObject @end
@implementation AttackerClass
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
[self setupPrettyBackground];
}
@end
....
// EXCHANGE IMPLEMENTATIONS
Method m = class_getInstanceMethod([AttackerClass class], @selector(drawRect:));
const char * types = method_getTypeEncoding(m);
IMP attackerImp = method_getImplementation(m);
class_replaceMethod([VictimClass class], @selector(drawRect:), attackerImp, types);
// Invoking …
Run Code Online (Sandbox Code Playgroud)