我在一个可可项目中使用TISInputSourceRef
(使用ARC),我无法弄清楚探查器报告内存泄漏的原因。
泄漏:
守则:
的InputSource
+ (NSDictionary *)current {
TISInputSourceRef source = TISCopyCurrentKeyboardInputSource();
NSDictionary *build = @{
@"name": (__bridge NSString*)TISGetInputSourceProperty(source, kTISPropertyLocalizedName),
@"layout": (__bridge NSString*)TISGetInputSourceProperty(source, kTISPropertyInputSourceID)
};
CFRelease(source);
return build;
}
UserDefaultsManager (实际通话)
+ (void)registerDefaults {
NSDictionary *currentInputSource = [InputSource current];
[[NSUserDefaults standardUserDefaults] registerDefaults:@{
kDefaultLayout: @{@"layout": currentInputSource[@"layout"]}
}];
}
我尝试使用CFBridgingRelease
代替__bridge
,复制currentInputSource[@"layout"]
而不是仅仅分配它并合并两种方法而没有运气。
我该如何解决这个漏洞? (或......我应该吗?)
谢谢!