我来自PHP/Javascript背景,在大多数情况下,事物直接存储在变量中,我们也有对象/类/方法等.这是OOP.
现在我开始学习Objective-C.我理解指针的基础知识.但现在一切都是指针.这是我没有得到的部分.为什么我们不喜欢直接分配的PHP/Javascript?我们仍然在做OOP.
谢谢
小智 7
如果你看看JavaScript和许多其他OO语言的语义(可能包括PHP,但我不确定并且不愿意猜测),你会发现这些语言通过指针提供了与Objective C相同的间接性.实际上,这些语言在内部使用指针.考虑这个(JavaScript)代码段:
function f(obj) {
obj.x = 1; // modifies the object referred to directly
obj = {x: 2}; // doesn't affect caller
}
var foo = {x: 0};
f(foo); // passes a pointer/"reference"
// foo.x === 1
Run Code Online (Sandbox Code Playgroud)
它大致相当于(C,因为我不知道Objective C)这样的东西,模数手动内存管理,静态类型等:
struct Obj { int x; };
void f(struct Obj *obj) {
obj->x = 1;
obj = ...; // you get the idea
}
struct Obj *foo = malloc(sizeof(*foo));
foo->x = 0;
f(foo);
free(foo);
Run Code Online (Sandbox Code Playgroud)
它只是在Objective C中是明确的,因为该语言是C的超集(100%向后兼容性和互操作性),而其他语言已经废除了显式指针并使得它们需要隐含的间接性.
归档时间: |
|
查看次数: |
820 次 |
最近记录: |