HogeClassという独自クラスを作り、NSMutableArrayに格納しようとしました。
しかし途中で自作のクラス(HogeClass)の、プロパティが消えてしまうというものです。(インスタンスと書きましたが、プロパティでした。大変失礼しました)
ObjectiveC
1+[NSMutableArray *) sampleMethod:(NSMutableArray *)hikisuuArray{ 2 3 NSMutableArray *result = [NSMutableArray array]; //←これが戻り値です 4 5 [hikisuuArray enumerateObjectsUsingBlock:~(DummyClass dummy,NSUInteger idx, BOOL *stop){ 6 //ここにいろんな処理を書きます。 7 HogeClass *hogeClass = [[hogeClass alloc]init]; 8 //ここでhogeClassインスタンスにいろんな値を代入します。 9 [result addObject:hogeClass];//hogeを戻り値に格納します。この時点ではhogeClassのインスタンスは存在しています。 10 } 11 //ここでは、resultに格納したはずのhogeClassのnsArrayPropertyプロパティがnillになっており、ウォッチウィンドウでも確認できません。 12 13 return result; 14} 15
HogeClassクラスはプロパティを持っています。このプロパティが消えてしまうのです。
ヘッダのプロパティ宣言は以下のようなものです。
ObjectiveC
1@interface HogeClass: NSObject 2@property (nonatomic,weak) NSString *strProperty; 3@property (nonatomic,weak) NSArray *nsArrayProperty; 4@end
このうち、strPropertyは、return resultの時点で残っていたのですが、nsArrayPropertyはnilになってしまうのです。
個人的な予想としては、resultにHogeClassの参照を持っているので、HogeClass内のnsArrayPropertyの参照も消えない(リリースされない)と考えていました。しかし、なぜかnsArrayPropertyはnillになっています。
皆様はどのように解決したでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/18 07:29
2016/02/18 07:36
2016/02/18 08:06