2

我昨天参加了一个 watchkit 黑客马拉松,我在调用一个使用 Google Maps API 并发送本地通知的 NSObject 类上的方法时遇到了一些问题。如果我从我的 Watchkit 扩展中调用此方法,则代码不会编译,但如果我从 ViewController 调用,例如,一切正常

#import "InterfaceController.h"
#import "Methods.h"

@interface InterfaceController()

 @end


 @implementation InterfaceController

- (instancetype)initWithContext:(id)context {
self = [super initWithContext:context];
if (self){
    // Initialize variables here.
    // Configure interface objects here.
    NSLog(@"%@ initWithContext", self);

}
return self;
}
- (IBAction)butRoute
{
     Methods *mt = [[Methods alloc]init];
    [mt notif:@"ARRIVING!"];
    //***** If I call this method, my code won't compile!!! *****

}

- (void)willActivate {
// This method is called when watch view controller is about to be visible to user
NSLog(@"%@ will activate", self);
}

- (void)didDeactivate {
// This method is called when watch view controller is no longer visible
NSLog(@"%@ did deactivate", self);
}

@end

我得到的错误是: 错误

4

3 回答 3

9

检查您的方法类的目标,并确保它在您的手表套件扩展目标中。

在此处输入图像描述

或者,看看为您的共享类构建一个框架。https://developer.apple.com/videos/wwdc/2014/?id=416

于 2014-11-24T20:31:49.590 回答
1

我不知道您使用的是什么 xcode 版本,但考虑到 initWithContext 方法不再有效。你应该使用:

- (void)awakeWithContext:(id)context

而且您不应该覆盖它,只需使用它即可。

于 2015-02-20T14:36:47.873 回答
0

只需删除 #import 行并将其替换为 WatchKit 框架。

于 2015-02-21T12:00:37.387 回答