Sah*_*bov 20 syntax objective-c
来自Java背景我猜这是预料之中的.我真的很想学习Objective-C并开始开发Mac应用程序,但语法只会让我感到害怕.
例如:
-(void) setNumerator: (int) n
{
numerator = n;
}
Run Code Online (Sandbox Code Playgroud)
什么是破折号,为什么在括号中后面跟着空?我从未在C/C++,Java或C#中的括号中看到过void.为什么我们在(int)n之后没有分号?但我们在这里有它:
-(void) setNumerator: (int) n;
Run Code Online (Sandbox Code Playgroud)
这个alloc,init,release进程有什么用?
myFraction = [Fraction alloc];
myFraction = [myFraction init];
[myFraction release];
Run Code Online (Sandbox Code Playgroud)
为什么[myFraction release];不myFraction = [myFraction release];呢?
最后是什么与@标志和这个实现在Java中的相同之处是什么?
@implementation Fraction
@end
Run Code Online (Sandbox Code Playgroud)
我目前正在阅读Objective C 2.0中的编程,这对于在Java背景中学习这种新语法非常令人沮丧.
更新1:在阅读了所有这些答案并在Objective C 2.0中进一步编程之后,现在它们开始变得有意义!
更新2:感谢伟大的提示"支持 - 多语言".我们可以将这两个语句组合成一个如下:
myFraction = [Fraction alloc];
myFraction = [myFraction init];
Run Code Online (Sandbox Code Playgroud)
可以简化为:
myFraction = [[Fraction alloc] init];
Run Code Online (Sandbox Code Playgroud)
Osc*_*Ryz 29
什么是破折号,为什么在括号中后面跟着空?
破折号-表示"实例级别"(这是Java中的默认值).当你看到加号时+它意味着类级别(与static在Java中使用相同)
括号中的void是返回类型,见下文.
为什么我们在(int)n之后没有分号?但我们在这里有它:
-(void) setNumerator: (int) n;
Run Code Online (Sandbox Code Playgroud)
因为这是方法签名,您可以将其视为一个接口:
interface YourClass {
void setNumerator(int n );// see? semicolon
}
Run Code Online (Sandbox Code Playgroud)
同样的情况.
Objective-C在C中有根(实际上这是带有对象的真正的C)需要一个头文件(在Java中完全删除),您可以在其中定义类所具有的函数/方法.
如果java中存在这样的东西,那将是:
// YourClass.java.h
interface YourClass {
void setNumerator(int n );
}
// YourClass.java.m
class YourClass {
void setNumerator( int n ) {
this.n = n;
}
}
Run Code Online (Sandbox Code Playgroud)
这个alloc,init,release进程有什么用?
myFraction = [Fraction alloc];
myFraction = [myFraction init];
[myFraction release];
Run Code Online (Sandbox Code Playgroud)
allo-init是newJava中的等价物,alloc当你为对象alloc请求内存,请求内存和init调用init方法时,等同于Java类构造函数(顺便说一句Ruby 在幕后做同样的事情)
没有相当于Java中的发布,因为它是垃圾收集的,在Objective-C中你必须释放你的对象.
顺便说一句,初始化也可以 myFraction = [[Fraction alloc]init];
最后是什么与@标志和这个实现在Java中的相同之处是什么?
@implementation Fraction
@end
Run Code Online (Sandbox Code Playgroud)
这是我之前提到的类定义.
我目前正在阅读Objective C 2.0中的编程,这对于在Java背景中学习这种新语法非常令人沮丧.
这是一个相关的答案,可以帮助您更熟悉方括号:
也许对于Objective-C的wiki页面有一个惊喜.我刚刚做了,找到了你的大部分答案.
http://en.wikipedia.org/wiki/Objective-C
我也是来自java背景,首先看看objectivec看起来不太性感.
它看起来像C++,面对一点点语法.
什么是破折号,为什么在括号中后面跟着空?
减去这里表示实例方法,加号表示类方法
我从未在C/C++,Java或C#中的括号中看到过void.
这是返回类型
为什么我们在(int)n之后没有分号?
如果您不提供方法体,则语法是方法声明 - 而不是实现.
最后是什么与@标志和这个实现在Java中的相同之处是什么?
@implementation Fraction
@end
Run Code Online (Sandbox Code Playgroud)
在java中可能会
public class Fraction {
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5532 次 |
| 最近记录: |