相同的代码适用于iOS 5但不适用于iOS 6.这是计数显示为0.任何想法? 因为我已经验证了house.png是一个有效的图像,所以应该说至少为1计数。
这是我的代码:
MyManager * myManager = [MyManager sharedInstance];
NSString *pathOfImageFile = [[NSBundle mainBundle] pathForResource:@"house" ofType:@"png"];
UIImage *myImage = [UIImage imageWithContentsOfFile:pathOfImageFile];
UIImageView * tempImageView = [[UIImageView alloc] initWithImage:myImage];
[myManager.assets addObject:tempImageView];
NSLog(@"image count: %d", [myManager.assets count]);
这是我的单身人士:
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface MyManager : NSObject
{
MyManager *_sharedObject;
NSMutableArray * assets;
}
//Property Listing
@property(nonatomic,copy) NSString * postTitle;
@property(nonatomic,copy) NSString * postText;
@property(nonatomic,copy) NSString * postLink;
@property(nonatomic,copy) NSString * postCategory;
//assets
@property (nonatomic, strong) NSMutableArray * assets;
+ (id)sharedInstance;
- (void)reset;
@end
#import "MyManager.h"
@implementation MyManager
//Property Listing
@synthesize postTitle=_postTitle;
@synthesize postText=_postText;
@synthesize postLink=_postLink;
@synthesize postCategory=_postCategory;
@synthesize assets=_assets;
- (id)init
{
self = [super init];
if ( self )
{
assets = [[NSMutableArray alloc] init];
NSLog(@"Singleton Initialized...");
}
return self;
}
+ (id)sharedInstance
{
static dispatch_once_t pred = 0;
__strong static id _sharedObject = nil;
dispatch_once(&pred, ^{
_sharedObject = [[self alloc] init]; // or some other init method
});
return _sharedObject;
}
- (void)reset
{
self.postTitle =@"";
self.postText=@"";
self.postLink=@"";
self.postCategory=@"";
[self.assets removeAllObjects];
}
@end
答案 0 :(得分:3)
您有与assets
财产相关的额外ivars。
您定义名为assets
的属性。然后(不必要地)合成属性,指定生成的ivar应该命名为_assets
。
你也(不必要地)声明一个名为assets
的明确的ivar。
在init
方法中,您将数组分配给assets
ivar。在reset
方法中,清除assets
属性(使用_assets
ivar)。
摆脱明确的assets
ivar。摆脱@synthesize
声明。这将为您留下_assets
的自动生成的ivar。
更新您的代码以使用该属性或_assets
ivar。
答案 1 :(得分:1)
尝试:
_assets = [[NSMutableArray alloc] init];
您在接口中将sharedObject定义为属性:MyManager *_sharedObject;
如果您总是通过[MyManager sharedInstance];
抓取您的实例,那么您不希望这样,该实例在本地静态var中保存初始化实例。