Вам не нужно вызывать retain для объекта в вашем выражении init.Также просто для хихиканья попробуйте:
dictionaryPlayers = [[NSMutableDictionary alloc] init];
вместо
dictionaryPlayers = [NSMutableDictionary dictionaryWithCapacity:10];
И сделайте это прямо над вашим лог-оператором (выведите его из инициализации).
Еслиэто работает, поместите журнал в ваш метод init и убедитесь, что он вызывается перед вашим методом, который добавляет KV в словарь
Я не могу воспроизвести это поведение.Вот мой код: ViewController.h:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property(nonatomic, retain) NSMutableDictionary *dictionaryPlayers;
@property (retain, nonatomic) IBOutlet UITextView *logTextView;
- (IBAction)logButtonPressed:(id)sender;
@end
ViewController.m:
#import "ViewController.h"
@implementation ViewController
@synthesize dictionaryPlayers;
@synthesize logTextView;
#pragma mark - My Methods
- (IBAction)logButtonPressed:(id)sender {
logTextView.text = [NSString stringWithFormat:@"%@,%d",[dictionaryPlayers description],[dictionaryPlayers count]];
NSLog(@"dictionaryPlayers=%@,%d",[dictionaryPlayers description],[dictionaryPlayers count]);
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
dictionaryPlayers = [[NSMutableDictionary alloc] init];
[dictionaryPlayers setValue:@"Test" forKey:@"testKey"];
NSLog(@"dictionaryPlayers=%@,%d",[dictionaryPlayers description],[dictionaryPlayers count]);
}
Нет проблем.Если вы делаете вещи таким образом, у вас не может быть проблем.Вот шаги, которые я бы предпринял для устранения неполадок:
- Выполните поиск проекта для PlayersDictionary и убедитесь, что больше ничего не трогает этот объект.
- Попробуйте очистить проект
- Создайте новый проект с этой структурой и посмотрите, что произойдет