【发布时间】:2012-11-10 16:09:30
【问题描述】:
我有一个“ABC”类及其返回该类的非自动释放对象的方法。
@interface ABC:NSObject
+(ABC *)aClassMethodReturnsObjectWhichNotAutoreleased;
@end
@implementation ABC
+(ABC *)aClassMethodReturnsObjectWhichNotAutoreleased{
ABC *a = [[ABC alloc]init];
return a;
}
@end
如果我有一个协议 Foo.
@Protocol Foo
@required
-(void)abc;
@end
我的 ABC 课程“不”确认 Foo 协议。
第一次调用
id<Foo> obj = [ABC aClassMethodReturnsObjectWhichNotAutoreleased]; //show warning
它显示警告“不兼容的指针..”这很好。Abc 没有确认协议 Foo
但是 第二次调用
id<Foo> obj = [NSArray arrayWithObjects:@"abc",@"def",nil]; // It will "not" show warning as it will return autorelease object.NSArray don't confirm protocol Foo
在第一次调用编译器给出警告,在第二次调用编译器没有给出任何警告。我认为这是因为我没有返回自动释放对象。
为什么编译器在第二次调用中没有给出警告,因为 NSArray 也没有确认 FOO 提前致谢
【问题讨论】:
标签: iphone objective-c ios ios5