我有一个“Note”课程,我有一个Tuner课程。我的Tuner类正在初始化它的init函数中的NSArray*
。
我想初始化这个数组以保存88个音符,现在我正在创建像Note * key1;等等。
我只是确保我需要为这些笔记分配内容,以便在初始化完成后它们不会超出范围,并且NSArray
与其条目保持一致,或者我能够声明注意key1并插入到数组中,它将由我处理。
创建包含一些对象的NSArray
的一段示例代码,即使在函数退出后数组也会保持不变,这将非常有用。谢谢!
答案 0 :(得分:2)
以下是一个简单的示例,说明如何在Tuner
类的初始化函数中执行此操作
for ( int i = 0; i < 88; ++i )
{
Note *key = [[Note alloc] init];
[myNotes addObject:key];
[key release];
}
请注意,在我的示例中,假设myNotes
属于NSMutableArray
类型。这是通过单独添加对象来构造数组的唯一方法。
答案 1 :(得分:2)
NSArray
和NSMutableArray
在添加对象时将-retain
发送给对象,因此适当的做法是-release
显式添加的对象或使用自动释放的对象。
以下是Tuner
班级-init
方法的简单示例:
- ( id )init
{
NSInteger i;
Note *note;
self = [ super init ];
if ( self ) {
notes = [[ NSMutableArray alloc ] initWithCapacity: 88 ];
for ( i = 0; i < 88; i++ ) {
note = [[ Note alloc ] initWithKey: i ];
[ notes addObject: note ];
[ note release ];
}
}
return( self );
}
您需要+alloc
每个Note对象和-release
,因为将其添加到数组会保留它。要在完成后销毁所有注释对象,请确保Tuner
类以-dealloc
方法释放数组:
- ( void )dealloc
{
[ notes release ]; // this sends release to all objects in the array, too
[ super dealloc ];
}
答案 2 :(得分:1)
在将保存notes数组的类中。
在创建数组的方法中:
答案 3 :(得分:0)
好吧,我不完全确定你要做什么,但你可以把NSMutableArray作为一个全局变量。然后,您可以向此数组添加和删除任何类型的任何对象。在您调用它的release方法之前,该数组仍将在内存中。