小编tt.*_*lew的帖子

UINavigationBar的drawRect未在iOS 5.0中调用

我已经覆盖了UINavigationBar的drawRect以显示自定义背景(放置在类别或调配中).在iOS 5中,它不起作用.我该怎么办?

iphone background uinavigationbar ios ios5

19
推荐指数
4
解决办法
1万
查看次数

有没有办法让NSBundle本地化缓存无效,重启应用程序?[iOS的]

假设我们可以在运行时更改Localizable.strings,它放在NSBundle中.在当前时刻,即使我们更改它的内容,NSLocalizedString也会返回旧的(缓存)值.

  1. 运行应用程序
  2. 获取特定key1 < - value1的LocalizableString
  3. 更改Localizable.strings key1 = value2
  4. < - 在应用程序中执行某些操作以使本地化缓存无效 - >
  5. 检查LocalizableString是否为特定key1 == value2

我已经尝试过的:

  • [[NSBundble mainBundle] invalidateResourceCache]
  • [UIApplication _performMemoryWarning]
  • 试图看,如果有一些词典.用于缓存,在NSBundle的ivars中.
  • 试图在GNUStep中实现NSBundle,但它与我们在ios 6.0中的不同

我不能做什么(根据定义): - 我不能调和[NSBundle localizableStringForKey:value:table] - 我不能改变宏 - 一般来说,我不能影响任何原始项目代码,只在第4步添加一些东西

这仅用于开发目的.所以,我不需要在AppStore中发布它,所以任何私有方法或解决方案都可以.

所以,问题是.可能有人知道这样做的方法,还是有人给我另一个想法怎么做呢?谢谢.

iphone private localizable.strings ios

5
推荐指数
1
解决办法
1395
查看次数

不使用"超级"关键字调用超级

我想要实现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)

iphone objective-c objective-c-runtime ios

3
推荐指数
1
解决办法
801
查看次数