オブジェクト自体を削除せずに別の配列のオブジェクトを指すNSMutableArrayのポインタを削除しようとしています。例:上記のコードでオブジェクトを保持したままNSMutableArrayからオブジェクトへのポインタを削除しますか?
// In ViewController.m – Code abridged and somewhat simplified
@interface ViewController()
@property (nonatomic, strong) NSMutableArray *objectPool;
@property (nonatomic, strong) NSMutableArray *objectsOwnedByFriend;
@property (nonatomic, strong) NSMutableArray *objectsOwnedByMe;
- (void)transferPointerToObjectFromFriendToMe;
- (void)copyPointerToObjectFromFriendToMe;
@end
@implementation ViewController
@synthesize objectPool = _objectPool;
@synthesize objectsOwnedByFriend = _objectsOwnedByFriend;
@synthesize objectsOwnedByMe = _objectsOwnedByMe;
- (void)setObjectPool:(NSMutableArray *)objectPool
{
_objectPool = objectPool;
}
- (NSMutableArray *)objectPool
{
if (!_objectPool) _objectPool = [[NSMutableArray alloc] initWithArray:self.objects]; // self.objects is a mutable array containing multiple NSObjects
return _objectPool;
}
- (void)setObjectsOwnedByFriend:(NSMutableArray *)objectsOwnedByFriend
{
_objectsOwnedByFriend = objectsOwnedByFriend;
}
- (NSMutableArray *)objectsOwnedByFriend
{
if (!_objectsOwnedByFriend)
{
_objectsOwnedByFriend = [[NSMutableArray alloc] init];
[_objectsOwnedByFriend addObjectsFromArray:self.objectPool];
}
return _objectsOwnedByFriend;
}
- (void)setObjectsOwnedByMe:(NSMutableArray *)objectsOwnedByMe
{
_objectsOwnedByMe = objectsOwnedByMe;
}
- (NSMutableArray *)objectsOwnedByMe
{
if (!_objectsOwnedByMe) _objectsOwnedByMe = [[NSMutableArray alloc] init];
return _objectsOwnedByMe;
}
- (void)transferPointerToObjectFromFriendToMe
{
[self.objectsOwnedByMe addObject:[self.objectsOwnedByFriend lastObject]];
[self.objectsOwnedByFriend removeLastObject];
}
- (void)copyPointerToObjectFromFriendToMe
{
[self.objectsOwnedByMe addObject:[self.objectsOwnedByFriend lastObject]];
}
@end
、IはtransferPointerToObjectFromFriendToMeを使用する場合、最後のオブジェクトを削除するself.objectPoolにself.objectsOwnedByFriendにそれへのポインタ(Iが望むように)、またオブジェクト自体の両方を除去(これはI したくない)。
実際のオブジェクトのすべてを含む配列(self.objectPool)と、self.objectPool内のオブジェクトへのポインタを含む2つの可変配列(self.objectsOwnedByFriendとself.objectsOwnedByMe)と、 self.objectPool内のオブジェクトを参照するポインタを、self.objectsOwnedByFriendおよびself.objectsOwnedByMeに追加して削除します。また
、私はtransferPointerToObjectFromFriendToMeまたはcopyPointerToObjectFromFriendToMeのいずれかを使用して、オブジェクトが0ではなく
1の溶液中のself.objectsOwnedByMe.count結果を経由して、その後のチェックとして、適切に追加されていないようです=私の怠惰なインスタンス化self.objectsOwnedByMeが私の元のコードで行方不明になったために:
NSLog(@"self.objectsOwnedByMe = %@", self.objectsOwnedByMe);
**私の最初のStackOverflowの質問:S
私は経由self.objectsOwnedByMeが適切に作成されたかどうかを確認することができました! **私は、私が古いスレッドを見逃した場合、似たような質問を見つけられなかったので、謝罪しています。診断するためにさらに情報が必要な場合はお知らせください。 (私はObj-Cを勉強しようとしています)
解決策を含めるために元の質問を編集する代わりに、実際に回答を提出し、その回答を選択済みとしてマークする必要があります。 googleから来る答えを探している人の視点から考えてみましょう。彼らはよく尋ねられた質問と答えを受け入れているのが好きです。 – slayton
さようなら、ようこそ、あなたのご滞在をお楽しみください。 – slayton
今私は見る...ページの下部に隠されて!ありがとう。 –