【语法问题】怎么给对象发消息? 我做JAVA开发的,看到下面这个,甚感火星文!!!请大家帮我全部(包括符号)解释下,非常感谢!!!!![myArray insertObject:anObject atIndex:0]; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 相当于java的 myArray.insertObjectAtIndex(anObject,0);语法形式不同而已。 [myArray insertObject:anObject atIndex:0];myArray 插入一个对象 anObject 在那个位置为0 的地方其实Objective C给对象发消息的语法源自Smalltalk 这个等价与java中 myArray[0] = anObject;其实Objective C这种语法有个好处, 给你看个例子:在窗口中绘制矩形的方法,如果是Objective C 会是这样:- (void) drawRectWithX:(float)x andY:(float)y andWidth:(float)width andHeight:(float)height{}public void drawRect(float x, float y, float width, float height){}这样好像还看不出好处,那么我分别调用一下两个,看看写法:Objective C:[obj drawRectWithX:10 andY:20 andWidth:90 andHeight:130];Java:obj.drawRect(10, 20, 90, 130);看看,java那个如果我不去看方法的声明,你能直接从调用的地方看出每个参数代表啥意义吗?如果你事先不知道drawRect函数的意思,你只看obj.drawRect(10, 20, 90, 130). 天知道10是啥意思,20又是啥意思,而Objective C呢,一目了然,10是X 20是Y 90是width 130是height 我写代码不加注释都可以(前提是你起的名字有意义一看便知),你慢慢想想看呢? 非常感谢您的耐心解答,问题似乎快要解决完了,但还有个问题比较困惑。[obj drawRectWithX:10 andY:20 andWidth:90 andHeight:130];以上代码,前提是obj对象已经实例化了,能有JAVA一样 new Test().printTest("test methods", false); 类似的写法吗?即:实例化Test后立即调用方法。[obj drawRectWithX:10 andY:20 andWidth:90 andHeight:130];以上写法,其中的andWidth等都是方法参数的别名(obj=对象,drawRectWithX方法别名,真正的名称是float x,不知对吗?),有个问题出来啦,即:方法写了4个参数,但调用的时候传入4个,那不用写方法名就能调用或第一个参数可以和方法名相同(可省略),或第一个无需写呢? 呵呵,我也是刚接触iOS开发,刚刚学Objective C, 看到那个代码,不仅甚感火星文,还甚感水星文。 [myArray insertObject:anObject atIndex:0];- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;OC 语法,[] 代表函数的调用,myArray 的两个参数,一个是anObject ,一个是位置 0. 百度poi数据和谷歌(mapabc)poi数据在移动互联网的应用数据包 如何把从windows传过来的位图数组画到屏幕上? 开发的一款笔记软件上线了 请问如何用一张图片实现循环滚屏,cocos2dx 很弱的问题 做IOS开发的薪资如何啊? tableview 重用问题 ios平台下G.711编码的音频转换成PCM Linear iOS git Xcode7 ruby iOS集成app支付宝,在读取私钥的时候发生野指针问题 导致程序崩溃 【分享游戏代码】今天发现的好多的游戏代码 想请教一下关于用户收藏如何实现更加高效合理
语法形式不同而已。
myArray 插入一个对象 anObject 在那个位置为0 的地方其实Objective C给对象发消息的语法源自Smalltalk
这个等价与java中 myArray[0] = anObject;其实Objective C这种语法有个好处, 给你看个例子:
在窗口中绘制矩形的方法,如果是Objective C 会是这样:- (void) drawRectWithX:(float)x
andY:(float)y
andWidth:(float)width
andHeight:(float)height
{
}public void drawRect(float x, float y, float width, float height)
{
}这样好像还看不出好处,那么我分别调用一下两个,看看写法:
Objective C:
[obj drawRectWithX:10
andY:20
andWidth:90
andHeight:130];Java:
obj.drawRect(10, 20, 90, 130);看看,java那个如果我不去看方法的声明,你能直接从调用的地方看出每个参数代表啥意义吗?如果你事先不知道drawRect函数的意思,你只看obj.drawRect(10, 20, 90, 130). 天知道10是啥意思,20又是啥意思,
而Objective C呢,一目了然,10是X 20是Y 90是width 130是height 我写代码不加注释都可以(前提是你起的名字有意义一看便知),你慢慢想想看呢?
非常感谢您的耐心解答,问题似乎快要解决完了,但还有个问题比较困惑。[obj drawRectWithX:10
andY:20
andWidth:90
andHeight:130];
以上代码,前提是obj对象已经实例化了,能有JAVA一样 new Test().printTest("test methods", false); 类似的写法吗?即:实例化Test后立即调用方法。[obj drawRectWithX:10
andY:20
andWidth:90
andHeight:130];
以上写法,其中的andWidth等都是方法参数的别名(obj=对象,drawRectWithX方法别名,真正的名称是float x,不知对吗?),有个问题出来啦,即:方法写了4个参数,但调用的时候传入4个,那不用写方法名就能调用或第一个参数可以和方法名相同(可省略),或第一个无需写呢?
- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;
OC 语法,[] 代表函数的调用,myArray 的两个参数,一个是anObject ,一个是位置 0.