1

相同的代码适用于 iOS 5,但不适用于 iOS 6。计数显示为 0。有什么想法吗?它应该说至少 1 作为计数,因为我已经验证 house.png 是一个有效的图像。

这是我的代码:

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
4

2 回答 2

3

您有与您的assets财产相关的额外 ivars。

您定义一个名为 的属性assets。然后(不必要地)合成指定生成的 ivar 应命名为 的属性_assets

您还(不必要地)声明了一个名为assets.

在您的init方法中,您将数组分配给assetsivar。在您的reset方法中,您清除assets属性(使用_assetsivar)。

摆脱显式的assetsivar。摆脱@synthesize声明。这将为您留下一个自动生成的_assets.

更新您的代码以使用属性或_assetsivar。

于 2013-02-17T18:04:05.807 回答
1

尝试:

 _assets = [[NSMutableArray alloc] init];

您在界面中将 sharedObject 定义为属性:MyManager *_sharedObject;

如果您总是通过[MyManager sharedInstance];该实例获取在该本地静态变量中保存已初始化实例的实例,则您不希望出现这种情况。

于 2013-02-17T17:59:14.113 回答