ищу цель c NSList-подобными опциями, (я знаю, об этом уже спрашивали здесь), какой пример вы могли бы привести? - PullRequest
2 голосов
/ 17 ноября 2010

вот что я пытаюсь преобразовать в цель c из c #:

public class Television
{
     public string Name {get; set};
     public bool isOn {get; set};
     public int channelNum {get; set};
     public string channelName {get; set};
}

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

 public List<Television> TVs = new List<Television>(4);

Когда я хочу, я могу сказать:

 TVs[3].channelNum = 34;
  1. в задаче c, как бы вы поместили это в массив / словарь (хеш-таблицу)?можешь привести пример?
  2. Если бы я создавал новый объект каждый раз, когда в доме ставили новый телевизор, и обращался к его свойствам, будет ли это более эффективным в памяти, чем класс списка?кажется, что список будет проще, чем создавать 4 набора массивов, не так ли?
  3. Может ли кто-нибудь дать мне пример того, как это будет использоваться, если я позвоню

    Телевизионные телевизоры = [[Television alloc] init];

    и используемых свойстввместо?

  4. Могу ли я использовать телевизионные объекты в nsmutablearray, и просто вытащить их, чтобы получить доступ к их свойствам, когда они мне нужны или когда они меняются?

Ответы [ 2 ]

3 голосов
/ 17 ноября 2010

Просто кое-что, чтобы дать вам идею (хотя это не очень красивый код) ...

@interface Television : NSObject {
@private
    NSString *name;
    BOOL isOn;
    int channelNumber;
    NSString *channelName;
}
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign, getter=isOn) BOOL on;
@property (nonatomic, assign) int channelNumber;
@property (nonatomic, copy) NSString* channelName;
@end

* 1004 реализации внешних *

@implementation Television
@synthesize name, on=isOn, channelNumber, channelName;
@end

Использование

Television *tv1 = [[[Television alloc] init] autorelease];
tv1.name = @"TV Name";
tv1.on = YES;
tv1.channelNumber = 236;
tv1.channelName = "Channel 236";

// create a mutable array to use as a list
NSMutableArray *array = [NSMutableArray array];

// add tv1 to the array
[array addObject:tv1];

// add another one
[array addObject:[[[Television alloc] init] autorelease]];
[array objectAtIndex:1].name = @"Another name";
2 голосов
/ 17 ноября 2010

Я не понимаю, что вы имеете в виду в своей точке № 2 (если у вас есть переменная коллекция элементов, которой нужно управлять, и изменяемый массив подойдет, просто используйте изменяемый массив - т.е. избегайте преждевременной оптимизации), но в остальном это довольно просто:

См. NSMutableArray .

NSMutableArray * televisions = [NSMutableArray array];
Television * thisTV = [[Television alloc] init];
[televisions addObject:thisTV];
[thisTV release];

// ...

[[televisions objectAtIndex:0] setChannelNumber:34];

Или NSMutableDictionary .

NSMutableDictionary * televisionsByRoomName = [NSMutableDictionary dictionary];
Television * thisTV = [[Television alloc] init];
[televisionsByRoomName setObject:thisTV forKey:@"livingroom"];
[thisTV release];
// ...
[[televisionsByRoomName objectForKey:@"livingroom"] setChannelNumber:34];

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...