1

我希望能够写作

id foo = [MyObject new];
foo.bar = [NSObject new];

但我收到以下错误:

/blah/blah/blah/Blah.m:32:9: error: property 'bar' not found on object of type '__strong id'
foo.bar = [NSObject new];
    ^
1 error generated.

由于 clang 没有报告我可以压制的警告,我认为这种行为是永久性的,但我希望有人能告诉我其他情况。

显然,我知道这会默认中断,但我计划使用动态方法解析来使其工作。

4

2 回答 2

3

您不能像这样在通用对象指针上使用点语法。

原因是编译器重写foo.bar = baz;[foo setBar:baz],但由于可以更改设置器的名称,@property (strong, nonatomic, setter=setListOfApples:) NSArray * listOfOranges;,它必须能够看到属性声明。

如果您使用标准的消息发送语法,这将起作用。换句话说,您必须告诉编译器对象的确切类型以便它可以查找属性的设置器,或者告诉它您希望它使用的确切设置器名称。

于 2012-10-03T16:38:52.173 回答
-2

@dynamic 会处理它吗?

@动态富;@动态条;

于 2012-10-03T16:18:58.557 回答