2013-03-20 4 views
-4

Я хочу создать Objective-C Class типа NSArray, но я не знаю, как инициализировать его или как добавить данные вКак использовать класс NSArray?

я сделал следующее:.

1 Создайте новый файл

enter image description here

2-я выбрал Objective-C Classenter image description here

3-я выбрала Subclass of типа NSArrayenter image description here

двух файлов Появляются:

.h:

#import <Foundation/Foundation.h> 

@interface ArrayClass : NSArray 

@end 

.m

#import "ArrayClass.h" 

@implementation ArrayClass 

@end 

Мой вопрос: Что такое следующие шаги.

1 что можно назвать в этом классе.

2- как инициализировать массив.

3- является -(id)init достаточно для того,

EDIT: я есть анализатор в моем ViewController и мне нужно инициализировать другой с другой ссылке XML, так вот почему мне нужно, чтобы новый класс с NSArray тип

Заранее спасибо.

+0

http://stackoverflow.com/questions/5752443/retrieving-class-object-from-nsarray-and-adding-to-self и https://developer.apple.com/library/mac/#documentation/ Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html – iPatel

+4

Вы действительно хотите получить * подкласс * NSArray, а не только * экземпляр *? – DrummerB

+1

Что именно вы хотите достичь? Вы будете добавлять методы в соответствии с вашими потребностями. Вы инициализируете массив обычным способом инициализации объектов. Единственная причина для реализации - (id) init - это если вы хотите переопределить его поведение (помните, что - (id) init наследуется от родительского класса). – Petar

ответ

2

Я собираюсь просто опубликовать это, чтобы кто-то сказал.

NSArray - кластер классов, обертка вокруг внутренней реализации. Внутренние детали его изменяются в зависимости от содержимого и размера массива, так что он оптимизирован для производительности. В результате этого не рекомендуется подкласс NSArray (или NSDictionary).

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

Возможно, повторите вопрос, чтобы мы все поняли, так как мы смущены тем, действительно ли вы хотите подклассифицировать его или просто создать.

0

Если вы просто пытаетесь использовать NSArray просто сделать это:

NSArray *myArray = [NSArray arrayWithObjects:@"foo",@"bar",@"baz",nil]; 

Нет необходимости делать то, что вы делаете, если вы не хотите, чтобы изменить фактическую структуру и расширить NSArray.

+0

У меня есть синтаксический анализатор в моем ViewController, и мне нужно инициализировать другой с помощью другой ссылки XML, поэтому поэтому мне нужно иметь новый класс с NSArray типа – Mutawe

+0

Эй, Мутав. Я ценю разъяснения. К сожалению, это не объясняет достаточно ясно, что мы можем помочь вам :) Вы говорите, что у вас есть парсер в контроллере просмотра (я предполагаю, что вы разбираете XML), и вам нужно создать еще один, чтобы проанализировать некоторые разные XML. Не могли бы вы разместить строку кода, которая может создать исходный парсер? – Cocoadelica

0

чек из this answer, если вы действительно пытаются расширить NSArray

, если вы не собираетесь расширить функциональность NSArray, вы, вероятно, хотите создать и экземпляр NSArray, который так же просто, как собирается NSArray *arrayName = [[NSArray alloc] init] в какой-то области, где вам нужен массив,

+0

Это неправильно. Все подклассы NSArray должны реализовывать функциональные возможности, указанные в ссылке класса NSArray. –

+0

О, я вижу, я был в предположении, что это было похоже на любой другой объект. плохой мой ответ – Fonix

0

Или, если вы хотите, массив можно добавить данные динамически вы собираетесь хотите

NSMutableArray *arr = [[NSMutableArray alloc] init]; 

Все зависит от того, что вы хотите.

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