2011-11-12 10 views
1

現在、最初のネイティブiPhoneアプリケーションを開発中です。このアプリケーションは、既存の.netアプリケーション内に統合され、WebServicesを使用します。しかし、私が直面している問題は、xcodeについての私の理解以上のものではないと信じています。私はこれを説明することを願ってiPhone Xcode配列リストアクセシブル

...私はWebサービスにオフに行くとアイテムの私のリストを(これらはテーブルビューを移入)、これは完全に正常に動作し返すのviewDidLoad内、私の最初のビュー内のOK

---抜粋---

- (void)viewDidLoad { 
//GET ALL ITEMS 
    myArray = [[NSMutableArray alloc] init];  
    MyWebService *webService = [[MyWebService alloc] init]; 
    myArray = [webService getAllNewsFunction]; 
    [super viewDidLoad]; 

} 

---抜粋---

[OK]をので、私は今、私のテーブルビューには、人口と、あなたを選択するために待っていますitem(この場合はニュース記事)記事の詳細を次のビューに取り込むためにselectedItemを決定する必要があります。しかし、didSelectRowAtIndexPathメソッドの中で、私の配列リストにアクセスできなくなっているようです。私は私が単に例えば私のWebサービスを使用せずに、現在のビュー内の私のviewDidLoad内のアイテムのリストを作成した場合のために、この時点で非常に混乱しています:

を---抜粋---

// listOfItems = [[NSMutableArray alloc] init]; 
// [myArray addObject:@"Iceland"]; 
// [listOfItems addObject:@"Greenland"]; 
// [listOfItems addObject:@"Switzerland"]; 
// [listOfItems addObject:@"Norway"]; 
// [listOfItems addObject:@"New Zealand"]; 
// [listOfItems addObject:@"Greece"]; 
// [listOfItems addObject:@"Italy"]; 
// [listOfItems addObject:@"Ireland"]; 

- - スニペット---

上記はdidSelectRowAtIndexPath内でアクセスでき、私はdetailviewにデータを入力できます。

私が直面している問題とそれがどのように解決できるかを特定するのを助けてください。私はあなたに非常に基本的な情報を提供していると理解しています。もっと情報を提供する必要があれば、私はそうすることができます。

- アップデート -

あなたの回答に基づいて私は以下を更新しました。

私は今、プロパティ

@property (nonatomic, retain) NSMutableArray *myArray; 

としてmyarrayの宣言ともにライン更新しました

self.myArray = [webService getAllNewsFunction]; 

- アップデート - しかし

私は今、エラーが表示される「プログラムを受信信号:self.myArray行の "SIGABRT" "。

あなたが命名規則に従っている場合は

おかげで再び

答えて

2

その後、方法[webService getAllNewsFunction]は、自動解放配列を返します。したがって、もう一度アクセスすると、すでにリリースされている可能性が高くなります。

あなたは、あなたが行うことでこの問題を解決することができます(これは、あなたがこれらの問題から自分を救うために必要があります)myArrayを宣言するために@propertyを使用している場合:

self.myArray = [webService getAllNewsFunction]; 

をこの行:

myArray = [[NSMutableArray alloc] init]; 

ですまた、の値を[webService getAllNewsFunction]に再割り当てした直後に、超過してメモリリークが発生した場合、新しいNSMutableArrayを解放せずに直ちに/ init'dを割り当てます

UPDATE

だからあなたの更新を読んでから、私はあなたが最初にあなたのプロジェクトが今、おそらくのようなもの読まれる持って警告を見てする必要があると思う:

プロパティ「をmyarrayの」方法」を必要とし定義するsetMyArray」 - 問題の次の手がかりは、私がこのような何かを得るコンソールに表示されます

に...

、@synthesizeを使う@dynamicまたはメソッドの実装を提供

- [TestAppDelegate setMyArrayは:]:認識されていないセレクタが...インスタンスに

を送っだから何それがすべてに帰着することはあなたのいずれかの方法

- (NSMutableArray *)myArray; 
- (void)setMyArray:(NSMutableArray *)myArray; 

を提供する必要がありますかこのような文をに追加すると、コンパイラはそれを実行します。

synthesizeはより簡単で迅速なオプションです。コンパイラは、@property宣言で使用するオプションに応じて、コoreアックメモリ管理を手配します。

+0

少し問題がありましたが、私は変更を実装しました。上記をご覧ください。 – NiPsTeR

+0

非常に役に立ちます!ありがとうございました。 – NiPsTeR