Sre*_*jit 0 iphone objective-c ios
我创建了一个协议和一个类来使用该协议.
JSTest.h文件=
@protocol JSTestDelegate
@end
@interface JSTest : NSObject {
id<JSTestDelegate> delegate;
}
@property (nonatomic, retain) id<JSTestDelegate> delegate;
- (id)initWithDelegate:(id<JSTestDelegate>)del;
@end
Run Code Online (Sandbox Code Playgroud)
JSTest.m文件=
#import "JSTest.h"
@implementation JSTest
@synthesize delegate;
- (id)initWithDelegate:(id<JSTestDelegate>)del {
self = [super init];
if(self) {
self.delegate = del;
}
return self;
}
- (void)dealloc {
[delegate release];
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 在dealloc方法中,
[delegate release]
Run Code Online (Sandbox Code Playgroud)
给我一个警告
-release not found in protocol(s)
Run Code Online (Sandbox Code Playgroud)
我无法确定原因.我的代码不应该失败,因为委托将永远是NSObject的子类.但是,我遇到了一些错误的警告,我忽略了警告而没有理解出现警告的原因.
pgb*_*pgb 10
有一个NSObject可以继承的协议(参考这里).该协议包含任何基本方法NSObject.
通过使自己的协议符合它,您将能够在-release不收到任何编译器警告的情况下调用.
示例代码:
@protocol JSTestDelegate<NSObject>
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
564 次 |
| 最近记录: |