我有一个单例,我想用它来管理我的视图的屏幕动画。这是我的。
#import <Foundation/Foundation.h>
@interface OAI_AnimationManager : NSObject {
NSMutableDictionary* sectionData;
}
@property (nonatomic, retain) NSMutableDictionary* sectionData;
+(OAI_AnimationManager* )sharedAnimationManager;
- (void) checkToggleStatus : (UIView* ) thisSection;
@end
.m 文件
#import "OAI_AnimationManager.h"
@implementation OAI_AnimationManager
@synthesize sectionData;
+(OAI_AnimationManager *)sharedAnimationManager {
static OAI_AnimationManager* sharedAnimationManager;
@synchronized(self) {
if (!sharedAnimationManager)
sharedAnimationManager = [[OAI_AnimationManager alloc] init];
return sharedAnimationManager;
}
}
- (void) checkToggleStatus : (UIView* ) thisSection {
//get the section data dictionary
NSLog(@"%@", sectionData);
}
@end
您将在 .h 文件中看到我添加了一个 NSMutableDictionary 并使用 @property/@synthesize 作为它的 getter 和 setter。
在我的 ViewController 中,我实例化了动画管理器以及一系列名为 Section 的 UIView 子类。对于每一个,我都将数据(x/yw/h、标题等)存储在字典中,并将其传递给动画管理器中的字典。在 Section 类中,我还实例化了动画管理器并添加了一个 UITapGestureRecognizer,它调用一个方法,该方法将哪个部分传递给动画管理器中的方法 (checkToggleStatus)。
正如您在我只是记录sectionData 的方法中看到的那样。问题是我的值是空的。
也许我对单例的理解是错误的。我的假设是该类只会被实例化一次,如果它已经被实例化,那么将返回现有的对象。
我确实需要所有其他 Section 类数据,就好像一个动画其他动画响应一样,我可以通过将点击的 Section 传递给动画管理器并执行 [[Section superview] subviews] 然后循环并从每个获取数据来绕过它这种方式,但它似乎是多余的,因为数据在创建时 ViewController 中可用。
我在尝试传输该数据时做错了什么?有更好的解决方案吗?我愿意接受建议和批评。
谢谢