我来自Java世界,所以对我来说它都是object.foo()
,但在Objective C中,对象消息传递是调用方法的唯一方法吗?
[object foo];
答案 0 :(得分:4)
您可以使用KVC:
[label setValue:@"Some text" forKey:@"text"];
答案 1 :(得分:1)
是。您可以使用点语法来获取或设置Objective C属性。因此,例如,在UILabel *标签上设置文本可以[label setText:@"some text"];
或label.text = @"some text";
答案 2 :(得分:1)
首先想到的是使用@property和dot-notation。 @property名为'foo'的类允许您这样做:
anInstance.foo = @"bar";
字面在编译时转换为
[anInstance setFoo:@"bar"];
(与“getters”类似)
其他方式更高级,例如使用NSObject的performSelector:方法,或其他系统,如NSInvocation等。更深入,有方法在运行时调用方法,使用c函数(所有这些语法最终沸腾无论如何都要调用c函数);但我确信那不是你想要的。
答案 3 :(得分:1)
为了迂腐,为什么不低级:
objc_msgSend(object, sel_getUid("foo"), errVar);