我是C和Objective-C的新手,之前已经教过Python。因此,有关C家族的事情让我感到困惑。我环顾网络,买书,浏览论坛,但有些事情仍然困扰着我......
我理解变量与指针的理论(一个返回一个值,另一个返回系统中值的地址。)我不明白的是什么时候使用一个而不是另一个。有什么建议吗?
宣布课程时,属性是什么?看起来属性和类变量是相同的,但我知道必须有一些关键的区别。
@interface testViewController : UIViewController {
IBOutlet UILabel *label;
IBOutlet UIImageView *uiImageView;
}
@property (nonatomic, retain) IBOutlet UILable *label;
@property (nonatomic, retain) IBOutlet UIImageView *uiImageView;
@end
如果可能的话,尽管不太可能,你能回答一下与Python的比较吗?我知道Objective-C和Python是白天和黑夜,但无论你能想到什么都会很棒。
我得到的书来自Apress:在Mac上学习C,在Mac上学习Objective-C,为绝对初学者学习iPhone和iPad应用程序。
我非常感谢任何帮助!
答案 0 :(得分:1)
与Java,Python和.NET不同,其中所有变量都是可以传递的“指向对象的指针”,在C中,事物可以存在于两个地方。
在程序代码中(当代码被命中时出现变量,当函数返回时消失)。像这样:
int my_arr[3];
或者,在“堆”上,内存不是动态请求的程序的一部分,如下所示:
int *my_arr_pointer = malloc(sizeof(int) * 3);
第二个例子接近于Java,Python和.NET如何传递。但是当你使用malloc()来获取内存时,你需要在以后使用free()...或者你的程序糟透了并浪费了计算机内存。因此,请使用技术确保使用一致的内存量。使用第二个来编写更灵活的应用程序。 C没有内存管理,这就是为什么第一种方法可以实现更快,更容易调试的程序......与第二种方法相比,需要在函数之间进行复制,在第二种方法中,程序增长和缩小时,更容易使用灵活大小的数组大小...但写起来稍微复杂一些。使用适当的。
3.宣布上课时,什么是财产?看起来属性和类变量是相同的,但我知道必须有一些关键的区别。
属性是类变量的包装器。一个“二传手”和一个“吸气鬼”。这允许您:
a)使用断点查找代码中 where ,并设置变量。
b)检查安全性或权限,或验证正在设置的值。
c)属性不必绑定到变量。当动态生成数据时,它可以创建它的“错觉”。例如,一个size属性可能会在你要求时计算字符串中的字母数,而不是存储它。
d)更灵活地在以后更改课程而不必更改访问该属性的所有内容。