我正在尝试在 UIView 类别中使用 MTAnimatedLabel 类(https://github.com/mturner1721/MTAnimatedLabel)(scalessec 的 iOS Toast 来自这里:https ://github.com/scalessec/Toast )
我知道我可能需要使用 Obj-C 相关引用。这是我正在尝试的方法:
MTAnimatedLabel *existingTestLabel = (MTAnimatedLabel *)objc_getAssociatedObject(self, &testLabelKey);
if(existingTestLabel != nil) return;
MTAnimatedLabel *testLabel = [[[MTAnimatedLabel alloc] initWithFrame:testFrame] autorelease];
testLabel.text = [NSString stringWithFormat:@"Test String."];
NSLog(@"testLabel: %@", testLabel.text);
objc_setAssociatedObject(self, &testLabelKey, testLabel, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
[self addSubview:testLabel];
[testLabel startAnimation];
它在这一行出现 EXC_BAD_ACCESS 失败:
MTAnimatedLabel *testLabel = [[[MTAnimatedLabel alloc] initWithFrame:testFrame] autorelease];
我的 testLabelKey 定义为:
static char const * const testLabelKey = "testLabel";
我的 testLabel 属性在接口中声明为:
@property (nonatomic, retain) MTAnimatedLabel *testLabel;
谁能发现我做错了什么,或者提出不同的方法?谢谢!