【问题标题】:NSObject call to self gives XCode errorNSObject 调用 self 给出 XCode 错误
【发布时间】:2013-04-09 17:44:10
【问题描述】:

我有一个继承自 NSObject 的 WebServices 类。我正在使用 xcode4.2 并打开了 ARC。 当我创建类时,NSObject 中没有其他方法位于 viewDidLoad 或 init。

问题是当我尝试调用 self.something 或 [self someMethod] Xcode 将我的代码标记为红色并抱怨:

Objective-C 指针类型“Class”到 C 指针类型“struct obj_class*”的隐式转换需要桥接转换

请帮忙。为什么 cocoa 不像 java 那样你调用“this”并获取你所在的对象?

// WebService.h file
@interface WebService : NSObject

@property (weak, nonatomic) NSString * myString;
+(void) setAndPrintMyString:(NSString*) someString;

@end



//WebService.m file


#import "WebService.h"
@implementation WebService

@synthesize myString=_myString;

+(void) printMyString:(NSString*) someString{
 [self setMyString:someString];      //XCode does not allow
 NSLog(@"myString is set to %@",self.myString); //XCode dose not allow
}

@end

【问题讨论】:

  • 你能显示你正在尝试的代码吗
  • @Paul.s 我在工作中添加了一些代码,如果代码有错别字,我深表歉意,我在发布之前没有运行它。
  • 您发布的代码对我来说很好 - 您需要发布实际代码以便我们可以看到真正的问题,或者 Xcode 正在发挥作用
  • @Paul.s 更新了我的代码......我有一个 +(void) 而不是 -(void) 我现在觉得这对我有意义。

标签: cocoa-touch ios6 xcode4.2 implicit-conversion nsobject


【解决方案1】:

viewDidLoad 方法不适合 NSObject 子类。这是UI 的一种方法,将在UIViewController 子类中。

现在,谈到self.something[self someMethod],这与NSObject 子类完美配合。您需要向我们展示您遇到问题的代码。

仅供参考(我认为您应该在完成此操作后开始为 iOS 开发):

【讨论】:

    【解决方案2】:

    +声明一个方法意味着它是一个类方法。在类方法中self 指的是类本身,在您的情况下是[WebService class]。如果您声明了实例方法(使用-),那么在方法self 内部将引用实例,这就是您想要的。

    要设置实例变量 - 你需要一个实例

    WebService *webService = [[WebService alloc] init];
    webService.myString = @"some string";
    

    现在要使您的方法工作,您需要使用 - 而不是 + 声明它,这使其成为实例方法

    - (void)printMyString:(NSString *)someString
    {
      [self setMyString:someString];
      NSLog(@"myString is set to %@",self.myString);
    }
    

    现在

    [webService printMyString:@"boom"];
    

    导致实例变量 myString 设置为 boom 并且控制台注销 `myString 设置为繁荣"。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-01
      • 2013-08-20
      相关资源
      最近更新 更多