Я довольно новичок в Objective-C.Я прочитал аналогичный вопрос , но я не могу понять, как решить мою проблему с этой информацией.
В основном я делаю это:
NSMutableArray* array1 = [[NSMutableArray alloc] initWithCapacity: 1];
NSNumber *n1 = [NSNumber numberWithInt: 12];
[array1 addObject: n1];
NSMutableArray* array2 = [[NSMutableArray alloc] initWithCapacity: 1];
NSNumber *n2 = [NSNumber numberWithInt: 13];
[array2 addObject: n2];
Добавление NSNumber 12 в массив прекрасно работает, но добавление 13 (или чего-то более высокого) не дает;программа аварийно завершает работу во время выполнения (нет сообщений об ошибках, а созданный файл stackdump полностью пуст).Я собираю gcc в Cygwin, если это имеет значение.Я понимаю, что это, вероятно, связано с сохранением количества, как в вопросе, который я упомянул выше, но я не знаю, как это исправить.Даже если я закомментирую последнюю строку, она падает ... поэтому она падает прямо при вызове numberWithInt, а это означает, что если я добавлю инструкцию retain для n2, у нее все равно не будет возможности вызвать вызов.
edit: Так как меня попросили больше кода, вот файл, который я сделал для проверки этой проблемы:
#import <stdio.h>
#import <Foundation/NSArray.h>
#import <Foundation/NSValue.h>
int main( int argc, const char *argv[] )
{
printf("1.\n");
NSMutableArray* array1 = [[NSMutableArray alloc] initWithCapacity: 1];
NSNumber *n1 = [NSNumber numberWithInt: 12];
[array1 addObject: n1];
NSMutableArray* array2 = [[NSMutableArray alloc] initWithCapacity: 1];
NSNumber *n2 = [NSNumber numberWithInt: 13];
[array2 addObject: n2];
printf("2.\n");
return 0;
}
Это печатает «1».а затем вылетает, как указано выше.Вот мой make-файл:
CYGWIN_GNUSTEP_PATH=/cygdrive/c/GNUstep
CXX = gcc
MAIN = DummyGame
SOURCES = DummyGame.m
OBJECTS = $(SOURCES:%.m=%.o)
COMP_FLAGS = -std=c99 -I $(CYGWIN_GNUSTEP_PATH)/GNUstep/System/Library/Headers -L $(CYGWIN_GNUSTEP_PATH)/GNUstep/System/Library/Libraries -fconstant-string-class=NSConstantString
LINK_FLAGS = $(COMP_FLAGS) -lobjc -lgnustep-base
all: $(MAIN)
$(MAIN): $(OBJECTS)
$(CXX) -o $@ $^ $(LINK_FLAGS)
%.o: %.m $(HEADERS)
$(CXX) -c $< $(COMP_FLAGS)
clean:
$(RM) $(MAIN) $(OBJECTS)