2010-08-20 2 views
0

Я действительно новичок в объекте C, и я хочу создать класс NSArray NSDictionary, а затем метод, который захватывает случайные записи. Я знаю, как это сделать, но я не понимаю, как это сделать в классе. Я имею в виду, что я думал, что вы можете поместить код, который был объявлен (или что бы то ни было правильная терминология), массив просто сортируется в середине файла реализации, а затем я напишу метод под этим. Единственной переменной экземпляра, которую я имел, был NSArray, и это было в файле интерфейса вместе с прототипом метода (или что-то еще), и это были единственные вещи, которые были в файле интерфейса.Вопрос о создании классов в Objective-C

Я не мог понять проблему, поэтому я сделал тестовый класс тем же, но с массивом простых текстовых строк. Я использовал ту же логику здесь, и я вполне уверен, что она полностью отсталая, но я не знаю, в каком направлении.

Это интерфейс для тестового класса:

#import <Foundation/Foundation.h> 


@interface TestClass : NSObject { 
    NSArray *TestArray; 
} 


@end 

И это файл реализации

#import "TestClass.h" 


@implementation TestClass{ 
    NSArray *TestArray; 
} 
TestArray = [[NSArray alloc] arrayWithObjects:@"stuff",@"things",@"example",@"stuffThings",nil]; 

@end 

ответ

0

Вы должны действительно прочитать Apple's introduction to Objective-C. Он объясняет синтаксис и структуру языка. Вы также должны прочитать Objective-C memory management guide, чтобы ваши программы не просачивали память и не разбивались.

Сказав, что здесь, вероятно, что вы пытаетесь создать (я взял на себя смелость изменить некоторые из ваших имен переменных):

TestClass.h

#import <Foundation/Foundation.h> 

@interface TestClass : NSObject { 
    NSArray* strings_; 
} 

// Method declarations would go here 
// example: 
- (NSString*)randomElement; 

@end 

TestClass.m

#import "TestClass.h" 
#import <stdlib.h> 

// Notice how the implementation does NOT redefine the instance variables. 
@implementation TestClass 

// All code must be in a method definition. 

// init is analogous to the default constructor in other languages 
- (id)init { 
    if (self = [super init]) { 
    strings_ = [[NSArray alloc] initWithObjects:@"stuff", @"things", nil]; 
    } 
    return self; 
} 

// dealloc is the destructor (note the call to super). 
- (void)dealloc { 
    [strings_ release]; 
    [super dealloc]; 
} 

- (NSString*)randomElement { 
    NSUInteger index = arc4random() % [strings_ count]; 
    return [strings_ objectAtIndex:index]; 
} 

@end 

Для random number generation он прост в использовании arc4random(), поскольку он не требует установки начального значения.

Смежные вопросы