objective c accessing public method
我尝试从另一个类访问公共方法。我已经尝试了很多我在网上找到的例子,但是它们没有按照我想要的方式工作。
第一类H
1 2 3 4 5 6 7 8 | @interface anything : NSObject { IBOutlet NSTextField *label; } + (void) setLabel:(NSString *)string; - (void) changeLabel:(NSString *)string2; |
1m级
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | + (void) setLabel:(NSString *)string { Class1 *myClass1 = [[Class1 alloc] init]; [myClass1 changeLabel:string]; NSLog(@"setLabel called with string: %@", string); } - (void) changeLabel:(NSString *)string2 { [label setStringValue:string2]; NSLog(@"changeLabel called with string: %@", string2); } |
第二类
1 2 3 4 5 | - (IBAction)buttonPressed { [Class1 setLabel:@"Test"]; } |
很奇怪的是,在nslogs中,一切都很好,在两个nslogs中,字符串都是"test",但textfield的stringvalue没有改变!
下面是一个简短的示例,说明您可以做什么:
自定义类1 2 3 4 5 6 7 8 9 10 11 | @interface ITYourCustomClass : NSObject @property (strong) NSString *title; - (void)doSomethingWithTheTitle; @end @implementation ITYourCustomClass - (void)doSomethingWithTheTitle { NSLog(@"Here's my title: %@", self.title); } @end |
使用它
1 2 3 4 5 6 7 8 9 | @implementation ITAppDelegate - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { ITYourCustomClass *objectOfYourCustomClass = [[ITYourCustomClass alloc] init]; [objectOfYourCustomClass doSomethingWithTheTitle]; } @end |
类和对象方法
用+声明方法意味着可以直接在类上调用方法。就像你和
我猜
您正在尝试使用类方法访问实例变量。您应该将
1 | [_myClass1Variable setLabel:@"Test"]; |
另外,什么是