2009-11-23 3 views
0

Я новичок в объективе c.Доступность изменяемого значения массива

Я создал один изменяемый массив в appdelegate. Я пытаюсь получить значения этого изменяемого массива в другом приложении. Но в этот момент он рушится. Ниже приведен код, я объявил в AppDelegate:

savedLocation = [[NSMutableArray alloc] init]; 
savedLocation = [[NSMutableArray arrayWithObjects: 
     [NSNumber numberWithInteger:0], 
     nil] retain]; 

Ниже код, в котором я пытаюсь получить доступ к значениям массива в другом приложении через AppDelegate:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
NSInteger selection = [[appDelegate.savedLocation objectAtIndex:0] integerValue]; 

Но это происходит сбой в:

NSInteger selection = [[appDelegate.savedLocation objectAtIndex:0] integerValue];

Пожалуйста, скажите мне, почему это сбой и правильный способ сделать Тхи с.

+0

Какое сообщение об аварии в консоли? – nduplessis

+0

Кроме того, вы протекаете в файле savedLocation = [[NSMutableArray alloc] init]; Это избыточно, поскольку [NSMutableArray arrayWithObjects:] возвращает новый объект с автореализацией. – nduplessis

+0

Пожалуйста, прочитайте документацию по управлению памятью Apple, поскольку вы явно не знаете, как это делает Cocoa. –

ответ

1

Если у вас действительно есть 2 разных объекта Objective-C, имейте в виду, что каждый из них будет иметь свой собственный [UIApplication sharedApplication]. Если я правильно понимаю ваш вопрос, вы предполагаете, что сможете передавать информацию между приложениями, используя этот механизм, и это просто не так. Каждое приложение будет иметь свой собственный sharedApplication и соответствующий делегат приложения и не сможет видеть членов другого.

Поскольку вы используете UIApplication (а не NSApplication), я выводя, что вы используете Cocoa Touch (для iPhone и IPod Touch), и поэтому вы, вероятно, заинтересованы в механизмах, которые являются для обмена данными между Приложения. Существует ряд возможных подходов, в том числе настраиваемый обработчик URL (чтобы одно приложение запускало другое приложение с некоторыми конкретными параметрами) или используя механизм синхронизации, зависящий от сети, в котором вы храните данные из обоих приложений в каком-либо общем местоположении сервера на интернет. Вы должны иметь в виду, однако, что:

  1. только один из ваших приложений будет постоянно работать на устройстве Cocoa Touch в любое время. Таким образом, переменные-члены в памяти делегата приложения будут выпущены, как только приложение, которое их создало, выйдет (чтобы освободить место для другого приложения).

  2. Я не знаю, для одного приложения Touch Cocoa для чтения данных, сохраненных другим приложением Touch Cocoa на устройстве. Операционная система строго изолирует все отдельные приложения, запущенные на устройстве, поэтому вы не можете читать данные, сохраненные другим.

This question похоже на то, что, я думаю, вы просите.

-1

ОК

Thanx для вашего ответа.

iF Я хочу получить доступ к Mutable массиву в другом представлении того же приложения, это ниже кода в порядке. Я пробовал это, но он рушится в той же точке, о которой я упомянул выше.

ниже код я пытаюсь получить доступ к значениям массива в другой точке зрения через AppDelegate

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
NSInteger selection = [[appDelegate.savedLocation objectAtIndex:0] integerValue]; 

но сбой в

NSInteger selection = [[appDelegate.savedLocation objectAtIndex:0] integerValue]; 
+0

SO - это сайт Q & A, а не форум. «Опубликовать свой ответ» для ответов. Если вам нужно уточнить свой вопрос или добавить дополнительную информацию, отредактируйте вопрос. Повторение кода, который вы уже опубликовали, не является уточнением. – outis

0

Если вы используете Objective-C и Cocoa для Mac Приложение OS X вы можете найти множество систем для передачи информации между двумя запущенными приложениями, то есть с использованием уведомлений, файловой системы, удаленных объектов, PasteBoard некоторая полезная информация c можно найти здесь: http://developer.apple.com/mac/library/navigation/index.html#section=Topics&topic=Interapplication%20Communication

Смежные вопросы