Я объявил два NSMutableArrays в интерфейсе одного из моих контроллеров представления, как вы можете видеть в коде ниже.Однако после синтеза свойств я пытаюсь инициализировать ивары моего класса в viewDidLoad.Если я перехожу через этот процесс в отладчике, я вижу, что он компенсирует выделение памяти одним иваром, если это имеет смысл.Так, например, когда я инициализирую первый NSMutableArray, я могу наблюдать, как адрес памяти присваивается другому ивару NSMutableArray.NSMutableArray, который должен инициализировать код, остается нулевым адресом памяти.Это странное «смещение» в распределении памяти является попыткой инициализации второго NSMutableArray тоже ... оно инициализируется в ячейке памяти моего DataHelper ivar.Это приводит к тому, что позже в коде появляются ошибки, такие как:
-[DataHelper count]: unrecognized selector sent to instance
Когда он ожидает ссылку на NSMutableArray в памяти, он вместо этого указывает на адрес памяти DataHelper.Кто-нибудь когда-либо испытывал что-то подобное?Я использую ARC, последнюю версию XCode и iOS 5.1.
MyViewController.h
#import <UIKit/UIKit.h>
#import "DataHelper.h"
@interface MyViewController : UIViewController
{
DataHelper *dataHelper;
NSMutableArray *recentPosts;
NSMutableArray *popularPosts;
}
@property (nonatomic, strong) DataHelper *dataHelper;
@property (nonatomic, strong) NSMutableArray *recentPosts;
@property (nonatomic, strong) NSMutableArray *popularPosts;
@end
viewDidLoad в MyViewController.m
@implementation MyViewController
@synthesize dataHelper, recentPosts, popularPosts;
- (void)viewDidLoad
{
[super viewDidLoad];
recentPosts = [[NSMutableArray alloc] init];
popularPosts = [[NSMutableArray alloc] init];
dataHelper = [[DataHelper alloc] init];
// I've also tried initializing the ivars as above, with "self." prefix
recentPosts = [dataHelper getSuggestionsByMostRecent:1];
popularPosts = [dataHelper getSuggestionsByPopular:1];
}