来自静态库iOS的委托
我无法使委托从我构建的静态库中工作。如果我在单独的项目中这样做,它会正常工作。你能查一下我的密码吗来自静态库iOS的委托,ios,objective-c,xcode,Ios,Objective C,Xcode,我无法使委托从我构建的静态库中工作。如果我在单独的项目中这样做,它会正常工作。你能查一下我的密码吗 StaticSdk.h @protocol SdkDelegate; @interface Sdk : NSObject @property (nonatomic, weak) id <SdkDelegate> delegate; +(void)startAction -(void)taskComplete; @end @protocol SdkDelegate <NSObje
StaticSdk.h
@protocol SdkDelegate;
@interface Sdk : NSObject
@property (nonatomic, weak) id <SdkDelegate> delegate;
+(void)startAction
-(void)taskComplete;
@end
@protocol SdkDelegate <NSObject>
-(void)taskGetDataCompleted:(NSMutableData*)pushedData;
@end
然后我将这个静态库包含到我的项目中,并且我指定的委托没有执行
项目代码
ViewController.h
@interface ViewController : UIViewController <SdkDelegate>
-(IBAction) Connect: (id) sender;
@end
我猜您未能在以下方面编译:
SdkDelegate *sdk = [[SdkDelegate alloc] init];
这里的问题是不能实例化协议。相反,您有一个类采用了该协议,看起来您在
ViewController
中正确地采用了该协议。您现在需要做的是将ViewController
的实例分配给Sdk
实例的delegate
属性,在调用startAction
之前的某个时候,您还不了解如何使用委托,您需要去重新阅读它们的使用方式。另外,您试图在类方法中使用一个(这就是+的意思,为什么一个+和另一个-?这是有意的吗?)。因此,您需要解决一些基本的理解问题,包括类和对象的基本用法。在运行之前,请尝试花一点时间步行。我正在使用静态库中的类方法,以便从project调用。如果我使用实例方法,我将无法访问该方法并获得异常。谢谢您的回答。它编译的很好,只是我可以从我的静态库得到回调,我很惊讶它会编译。这里有一些错误,您肯定无法在SdkDelegate
上调用alloc
和init
。但是,要正确使用委托模式,需要将委托属性设置为要响应调用的对象,在本例中,该对象是ViewController
的实例。
- (void)taskGetDataCompleted:(NSMutableData*)pushedData
{
[imageView setImage:[[UIImage alloc] initWithData:pushedData]];
}
SdkDelegate *sdk = [[SdkDelegate alloc] init];