6

我来自 Java 世界,所以对我来说就是这样object.foo(),但是在 Objective C 中,对象消息传递是调用方法的唯一方法吗?

[object foo];
4

4 回答 4

4

您可以使用 KVC:

 [label setValue:@"Some text" forKey:@"text"];
于 2012-06-17T05:56:13.577 回答
1

是的。您可以使用点语法来获取或设置 Objective C 属性。因此,例如在 UILabel *label 上设置文本可以通过[label setText:@"some text"];或者label.text = @"some text";

于 2012-06-17T04:19:55.160 回答
1

首先想到的是使用@property 和点符号。一个名为 'foo' 的 @property 类允许你这样做:

anInstance.foo = @"bar";

在编译时字面上翻译为

[anInstance setFoo:@"bar"];

(类似于“吸气剂”)

其他方式更高级,比如使用NSObject的performSelector:方法,或者其他系统比如NSInvocation等。再深入一点,在运行时有调用方法的方法,用c函数(所有这些语法最终归结为调用无论如何都是c函数);但我敢肯定这不是你所追求的。

于 2012-06-17T04:21:37.977 回答
1

为了迂腐,为什么不低级:

objc_msgSend(object, sel_getUid("foo"), errVar);
于 2012-06-17T05:13:47.003 回答