这是我正在尝试从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;
有人可以给我一个例子,说明如果我打电话
将如何使用它电视电视= [[电视分配]初始化];
并使用了属性?
我可以在nsmutablearray中使用电视对象,只是在需要时将它们拉出来访问它们的属性,或者当它们发生变化时?
答案 0 :(得分:3)
只是给你一个想法的东西(虽然它不是很可爱的代码)......
@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
实行
@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";
答案 1 :(得分:2)
我不明白你的第2点是什么意思(如果你有一个需要管理的项目的可变集合,一个可变数组就可以做,只需使用一个可变数组 - 即避免过早优化),但是其余的,这很简单:
NSMutableArray * televisions = [NSMutableArray array];
Television * thisTV = [[Television alloc] init];
[televisions addObject:thisTV];
[thisTV release];
// ...
[[televisions objectAtIndex:0] setChannelNumber:34];
NSMutableDictionary * televisionsByRoomName = [NSMutableDictionary dictionary];
Television * thisTV = [[Television alloc] init];
[televisionsByRoomName setObject:thisTV forKey:@"livingroom"];
[thisTV release];
// ...
[[televisionsByRoomName objectForKey:@"livingroom"] setChannelNumber:34];
所有这些以及更多内容都可以用于阅读Collections Programming Topics的低价,低价,这在介绍概念Cocoa文档中的许多地方都有提及。