Ok, WFM.

> On May 30, 2014, at 11:10 AM, Jordan Rose <[email protected]> wrote:
> 
> Our implementation currently does, but I don't think that's guaranteed, 
> publicly documented (other than our libobjc being open-source), or something 
> people should be relying on.
> 
> Jordan
> 
> 
> On May 30, 2014, at 11:06 , Argyrios Kyrtzidis <[email protected]> wrote:
> 
>> I’m mainly asking if blocks are implicitly implementing the NSObject 
>> protocol or not, for example this seems to work:
>> 
>> typedef void(^blk)(void);
>> 
>> int main() {
>>      blk b = ^{};
>>      BOOL res = [b respondsToSelector:@selector(retain)];
>>      printf("res: %d\n", res);
>>      return 0;
>> }
>> 
>> 
>>> On May 30, 2014, at 11:03 AM, Jordan Rose <[email protected]> wrote:
>>> 
>>> I think I agree with Fariborz on this one. I don't remember us ever 
>>> promising that blocks implement the NSObject protocol, just that they are 
>>> valid Objective-C objects and that they implement -retain, -release, and 
>>> -copy. The spec on the Clang site doesn't even promise -retain. 
>>> (http://clang.llvm.org/docs/BlockLanguageSpec.html#objective-c-extensions)
>>> 
>>> The developer can always cast if they really need this.
>>> 
>>> Jordan
>>> 
>>> 
>>> On May 30, 2014, at 10:49 , jahanian <[email protected]> wrote:
>>> 
>>>> It makes no sense to assign block to an object conforming to protocols.
>>>> Such objects must implement methods of those protocols which  blocks 
>>>> cannot.
>>>> I explicitly ruled this out. Did you see this in an actual user code? 
>>>> Curious to see how it is being used.
>>>> 
>>>> - Fariborz
>>>> 
>>>> On May 30, 2014, at 10:32 AM, Argyrios Kyrtzidis <[email protected]> 
>>>> wrote:
>>>> 
>>>>> This is giving an error in the following case, is this correct ?
>>>>> 
>>>>> #import <Foundation/Foundation.h>
>>>>> 
>>>>> typedef void(^blk)(void);
>>>>> 
>>>>> void foo(blk b) {
>>>>>   id<NSObject> x = b; // error: initializing 'id<NSObject>' with an 
>>>>> expression of incompatible type 'blk' (aka 'void (^)(void)')
>>>>> }
>>>>> 
>>>> 
>>>> _______________________________________________
>>>> cfe-commits mailing list
>>>> [email protected]
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>> 
>> 
> 


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to