我有一个类,这个类有一个委托协议。我使用这个类在主类中创建一个对象,并将主类指定为委托。主类有一个我想在创建的类中读取的属性。然后,我这样做:为什么我必须施放代表?
BOOL prop = [self.delegate myProperty];
Xcode中抱怨说,当你发送消息给
如果我将消息发送到self.delegate
“delegate
可能不myProperty
回应”阅读myProperty
,和一般的Xcode从不抱怨一个没有铸造的对象,为什么我必须这样做
BOOL prop = [(myMainClass *)self.delegate myProperty];
使它工作?
更清楚,这里是一个发送给对象的消息的示例,而无需投:
[self.myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger index, BOOL *stop){
int Number = [[obj dictionaryOfNames] count];
}];
self.myArray
是从另一个类是词典和具有这种性质dictionaryOfNames
对象的数组。 Xcode从来没有要求我演员:
int Number = [[(myOtherClass *)obj dictionaryOfNames] count];
因为我不得不在上面为myProperty
。
好的,但是如果我可以使用格式[obj消息]将消息发送到对象,为什么有必要识别该对象?尽管委托类,它应该接受格式[obj消息]没有欺骗,据我所知是Objective-C背后的想法或不? – SpaceDog
您只能将消息发送给了解这些消息的对象,否则您会收到错误消息。尝试发送一些自定义消息给NSObject - 它不起作用。 – Pfitz
抱歉,但这不是我所看到的。我已经添加了一些代码来解释我的问题。 – SpaceDog