gpt4 book ai didi

objective-c - 非常基本的objective-c问题

转载 作者:行者123 更新时间:2023-12-04 06:59:06 25 4
gpt4 key购买 nike

我写了一个简单的程序来理解 Objective-c 的工作原理。这个程序是《易经》,一种基于六行响应的古老占卜,在发射三个硬币六次后计算,然后构建一个六芒星作为响应。

我坚持这一点,我确信有简单的解决方案。这就是我定义线条的方式,我知道这不是最好的设计,但我正在尝试使用尽可能多的技术。
假设您发射一枚硬币,它可以是 3 或 2,具体取决于侧面,三个硬币的可能值是 6、7、8、9。

 /**
* identifying a coin
*/
typedef enum {
head=3,
tail=2
} Coin;

/**
identify a line, three coins with a side value of
2 and 3 can result in 6,7,8,9
*/
typedef enum {
yinMutable=tail+tail+tail, // 6 --> 7
yang=tail+tail+head, // 7
yin=head+head+tail, // 8
yangMutable=head+head+head // 9 --> 8
} Line;

/**
The structure of hexagram from bottom "start" to top "end"
*/
typedef struct {
Line start;
Line officer;
Line transit;
Line minister;
Line lord;
Line end;
} Hexagram;

我在这个设计中遇到的第一个问题是在 Hexagram 的每一行分配一个值。第一次发射应该在开始时填写值,第二次在军官中......等等。
但是可以通过开关盒轻松解决……尽管我不喜欢它。

1)第一个问题:我想知道是否有像javascript或c#这样的函数
foreach(Hexagram 中的属性)让我可以按其声明顺序浏览属性,这将解决我的问题。

2)第二个问题:作为替代方式,我使用了一个 Line 数组:
Controller.m
....
Line response[6]
....

-(id) buildHexagram:... {

for(i =0.....,i++).....
response[i]=throwCoins;

// I omit alloc view and the rest of the code...then
[myview buildSubview:response];
}


----------------------
subView.m


-(id) buildSubView:(Line[]) reponse {

NSLog(@"response[0]=%o",[response objectAtIndex[0]]); <--- HERE I GOT THE ERROR
}

但是,在这个解决方案中,我收到了一个错误 EXC_BAD_ACCESS
所以显然我误解了数组在objective-c 或c 中的工作原理!
希望我已经足够清楚,有人可以指出第一个问题的解决方案,以及我在第二个选项中做错了什么。

谢谢
莱昂纳多

最佳答案

您已经创建了一个 Line 的 C 数组 - 访问需要使用 C 样式数组访问器的元素。

所以代替

[response objectAtIndex[0]]


response[0]

关于objective-c - 非常基本的objective-c问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2167873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com