2014-02-16 76 views
0

我创建了一个类,我试图访问公共方法内部的一些属性,但我不能,编译器不允许,我真的需要一些帮帮我。 这是我的代码,我指望你们。 是否有其他方法可以做到这一点?如何访问公共方法目标中的属性c

.h文件

@interface DirController : NSObject 



+ (void)startCreate; 
+(DirController *)getInstace; 



@property (strong, nonatomic) NSString * nomeDiretorio; 
@property (strong, nonatomic) NSString * enderecoUrl; 
@property (strong, nonatomic) NSString * nomeUsuario; 
@property (strong, nonatomic) NSString * senha; 
//@property (strong, nonatomic) NSString * nomeCliente; 
@property (nonatomic, assign, readonly) BOOL    isCreating; 
@property (nonatomic, strong, readwrite) NSOutputStream * networkStream; 

.m文件

+ (void)startCreate 
{ 
    BOOL     success; 
    NSURL *     url; 

    // assert(self.networkStream == nil);  // don't tap create twice in a row! 

    // First get and check the URL. 

    url = [[NetworkManager sharedInstance] smartURLForString:self.enderecoUrl]; 
    success = (url != nil); 

    if (success) { 
     url = CFBridgingRelease(
           CFURLCreateCopyAppendingPathComponent(NULL, (__bridge CFURLRef) url, (__bridge CFStringRef) self.nomeDiretorio, true) 
           ); 
     success = (url != nil); 
    } 

    // If the URL is bogus, let the user know. Otherwise kick off the connection. 

    if (! success) { 

    } else { 



     self.networkStream = CFBridgingRelease(
               CFWriteStreamCreateWithFTPURL(NULL, (__bridge CFURLRef) url) 
               ); 
     assert(self.networkStream != nil); 

     if ([self.nomeUsuario length] != 0) { 
      success = [self.networkStream setProperty:self.nomeUsuario forKey:(id)kCFStreamPropertyFTPUserName]; 
      assert(success); 
      success = [self.networkStream setProperty:self.senha forKey:(id)kCFStreamPropertyFTPPassword]; 
      assert(success); 
     } 

     self.networkStream.delegate = self; 
     [self.networkStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 
     [self.networkStream open]; 

     // Tell the UI we're creating. 

     [self createDidStart]; 
    } 
} 

回答

1

这是因为该方法startCreate不是一个实例方法,它是。一个类方法,你不能访问类方法中的实例变量

您可以更改starCreate方法是通过更换+符号的实例方法 - 在方法的开始标志(假设你知道你在做什么)

0

类方法就是这样;班上的一种方法。没有实例存储状态。

您需要创建(您的类的实例,即MyClass *myThing = [[MyClass alloc] init];,将您的类方法与实例方法,然后它会正常工作。

相关问题