有没有办法重新分配一个变量,给它一个不同的内存地址里面一个for循环的OBJÇ - 给变量新的内存地址,每次调用方法
我使用ARC
的主要部分代码在这里;
- (void) deal:(BOOL)isDefault
{
player = [[Player alloc] init];
appDel = [[BlackjackAppDelegate alloc] init];
appDel.playersArray = [[NSMutableArray alloc] init];
appDel.discardPile = [[NSMutableArray alloc] init];
// Initial Deal
int i; // Current Card for player
int j; // Current Player
if (isDefault)
{
startingCardCount = 7;
numberOfPlayers = 4;
}
for (int temp = 0; temp < numberOfPlayers; temp++)
{
[self addPlayersWithNumber:temp];
}
// Loops through number of cards supposed to be in hand (if default settings: use 7 cards)
for (i = 0; i < startingCardCount; i++)
{
// Loop through number of players (if default settings: use 4 players)
for (j = 0; j < numberOfPlayers; j++)
{
//Player *tempPlayer = [appDel.playersArray objectAtIndex:j];
Card *card = [Card generateCardWithAppDel:appDel];
Player *tempPlayer = [appDel.playersArray objectAtIndex:j];
[tempPlayer.hand addObject:card];
[self refreshPlayerIndex:j withPlayer:tempPlayer];
}
}
}
- (void) addPlayersWithNumber:(NSInteger)playerNumber
{
// THIS VARIABLE I WANT TO "REALLOCATE" EACH TIME THIS METHOD IS CALLED
Player *tempPlayer = [[Player alloc] init];
tempPlayer.number = playerNumber;
[appDel.playersArray addObject:player];
}
感谢您的帮助,您可以给我,我真的很需要这是固定的,我加入到一个数组和交易方法的不同部分操作(如图)
编辑:
Player.h:
//
// Player.h
// Blackjack
//
// Created by Zach Ross-Clyne on 02/03/2013.
// Copyright (c) 2013 Avicode. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "BlackjackAppDelegate.h"
@interface Player : NSObject
{
NSInteger type;
NSInteger number;
NSMutableArray *hand;
}
@property (nonatomic, strong) NSMutableArray *hand;
@property (nonatomic) NSInteger type;
@property (nonatomic) NSInteger number;
@end
Player.m
//
// Player.m
// Blackjack
//
// Created by Zach Ross-Clyne on 02/03/2013.
// Copyright (c) 2013 Avicode. All rights reserved.
//
#import "Player.h"
@implementation Player
@synthesize number, hand, type;
- (id) init
{
hand = [[NSMutableArray alloc] init];
return self;
}
@end
您发布3'for'循环。什么代码是相关的,以及你的意思是不同的内存地址? – woz 2013-05-03 19:18:20
你需要更精确地表达你的意思。顺便说一句:内循环中有一个明显的错误,你只需要在下一行创建一个'tempPlayer'来覆盖它。要么你创建你的tempPlayer(alloc + init舞蹈),要么你从一些数组中检索它,但不能同时使用它们。 – verec 2013-05-03 19:20:49
@woz第一个for循环,那个调用'addPlayersWithNumber'方法,它具有变量...并且在调试控制台中它说'tempPlayer =(Player *)0x0724ccc0' - 我想改变0x0724ccc0位每次被调用,否则其数组中的“相同”对象 – 2013-05-03 19:21:46