Iphone NSMutableArray replaceObjectAtIndex:withObject:不工作
我有一个可变数组,最初,我在作用域上遇到了问题。我得到了一些关于如何修复该问题的建议(这是有效的),但现在数组将不会替换给定索引处的对象 代码如下: .h文件:Iphone NSMutableArray replaceObjectAtIndex:withObject:不工作,iphone,objective-c,ios,arrays,nsmutablearray,Iphone,Objective C,Ios,Arrays,Nsmutablearray,我有一个可变数组,最初,我在作用域上遇到了问题。我得到了一些关于如何修复该问题的建议(这是有效的),但现在数组将不会替换给定索引处的对象 代码如下: .h文件: @interface myViewController: UIViewController { NSMutableArray *myArray; } .m文件: -(id)init { self = [super init]; if (self){ myArray = [[NSMutableArray alloc]
@interface myViewController: UIViewController {
NSMutableArray *myArray;
}
.m文件:
-(id)init {
self = [super init];
if (self){
myArray = [[NSMutableArray alloc] init];
}
return self;
}
-(void)viewDidLoad {
for (int x=0; x<6; x++) {
[myArray addObject:[NSNumber numberWithInt:0]]; //This adds the numbers just fine
}
[myArray insertObject:[NSNumber numberWithInt:1] atIndex:0]; //This does not insert the number 1 into index 0
}
还有其他一些,但都不起作用
我将非常感谢任何帮助,因为这是唯一一件事站在我和完成我的第一个应用程序
谢谢 首先,类名应该大写。我之所以说“第一”,是因为这表明您没有遵循约定,这可能会导致理解上的问题,如果不是彻底的错误的话
第二,您确定正在调用
init
方法吗?如果您的对象是通过接口文件加载实例化的,那么它可能不是,数组可能为零。请确保在调用当前视图方法的addSubview之前
YouViewNewController *youViewNewController=[[YouViewNewController alloc]init];
[self.view addSubview:youViewNewController.view]; // Calls viewDidLoad.
这是我的工作
-(id)init {
self = [super init];
if (self){
myArray = [[NSMutableArray alloc] init];
NSLog(@"Lancement...");
}
return self;
}
-(void)viewDidLoad
{
NSLog(@“Calcul…”);
对于(int x=0;xUIViewController
的指定初始值设定项是-initWithNibName:bundle:
。您应该覆盖它,而不是-init
。您的-init
没有被调用,因此您永远不会将任何内容分配给myArray
;它只是保持为nil
,在我看来这是正确的,并采取行动如何初始化类?不是因为他们使用了-init吗?尝试debugARC是一个非常重要的概念,至少要知道您是否在使用它。简短的版本(回答问题)是:当您创建新项目时,是否单击了“使用自动引用计数”的框您如何确定哪些有效,哪些无效?如果值为nil,那么将其与0进行比较仍将显示为true…您的init
方法可能未被调用(尝试在其中放入NSLog(@“Hello”);
),因此,实例变量myArray
为nil
,或者putNSLog(@“%@”,myArray);
在您的viewDidLoad
方法中。@user1165664 bbum想说的是,不要将myArray=[[NSMutableArray alloc]init];
在init
方法中。取而代之的是,将其放入viewDidLoad
中。只有在调用viewDidLoad
之前从未使用过myArray
时,这才有效。
-(id)init {
self = [super init];
if (self){
myArray = [[NSMutableArray alloc] init];
NSLog(@"Lancement...");
}
return self;
-(void)viewDidLoad
{
NSLog(@"Calcul...");
for (int x=0; x<6; x++)
{
[myArray addObject:[NSNumber numberWithInt:0]]; //This adds the numbers just fine
}
[myArray insertObject:[NSNumber numberWithInt:1] atIndex:0]; //This does not insert the number 1 into index 0
NSLog(@"%i", [[myArray objectAtIndex:0]intValue]);
}