当前位置:  开发笔记 > 编程语言 > 正文

Objective-C澄清; - /+和*var

如何解决《Objective-C澄清;-/+和*var》经验,为你挑选了1个好方法。

我正在从一本书(Mac OS X的Cocoa编程)中自学Objective-C,但是我已经有一半了但是我有两个问题没有在书中得到解答或定义.

    在定义类方法时(假设存在于.h文件中)之间有什么区别:

    - (int)人口;

    +(int)人口;

我现在看到的方式是-方法要求首先分配和初始化类,但是+可以静态调用,而不需要分配和初始化.例如(在另一个类的函数中)

// Using -
Earth *world = [[Earth alloc] init];
int population = [world population];

// Using +
int population = [Earth population];

如果这是正确的,我何时应该使用静态方法,这样做是否有任何缺点.

    在函数参数中定义var或在函数中定义var时,是否使用*表示var将是一个对象?例如(再次在头文件中.)

    - (void)setPopulation :( NSNumber*)人口; //使用*作为人口是NSNumber

    - (void)setPopulation:(int)population; //人口不是一个类,所以不需要*

很抱歉,如果我的任何术语在Objective-C领域没有意义,例如静态方法等.我是PHP和Ruby程序员.



1> Jason Coco..:

Objective-C的方法声明中的 - /+仅表示该方法是类方法还是实例方法.例如,使用Objective-C,您无法向实例发送声明为类方法的消息.例如:

@interface MyObject : NSObject
-(void)myInstanceMethod;
+(void)myClassMethod;
@end

// ...

MyObject* obj = [[MyObject alloc] init];

[obj myInstanceMethod];      // this is okay
[obj myClassMethod];         // this will fail
[[obj class] myClassMethod]; // this is okay
[MyObject myClassMethod];    // this is okay
[MyObject myInstanceMethod]; // this will fail

至于问题的第二部分,Objective-C是C的严格超集.它添加了类,但它们实际上是C数据结构,其实现对于Objective-C运行时是隐藏的.因此,类总是表示为指针.在C中,*表示该变量被声明为指向某个内存地址的指针.您也可以在C中使用带有基本类型的指针,但必须始终通过指针引用Objective-C对象.

有许多很棒的教程/介绍指针.我建议只需谷歌搜索C教程和指针,了解更多.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有