我已经查询了一个与我目前为止的代码类似的线程。不幸的是,这不按计划运作。以下代码不会产生错误/警告但不会执行任何操作。我想要IBOutlet类级别,因为它将在如下所述的类级方法中使用。
#import <Foundation/Foundation.h>
@interface Interface : NSObject <NSApplicationDelegate> {NSTextView* textView;}
@property (nonatomic, retain) IBOutlet NSTextView* textView;
+ (void)NSPrint:(NSString*)aString;
@end
同时在Interface.m ..
#import "Interface.h"
@implementation Interface
@synthesize textView;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[Interface NSPrint:@"Have fun with this program!"];
}
+ (void)NSPrint:(NSString*)aString
{
[[[[[Interface new] textView] textStorage] mutableString] appendFormat:@"%@\n",aString];
}
答案 0 :(得分:2)
我不确定你在这里做什么。 NSPrint创建Interface实例,并更改其实例变量之一的属性。然后方法结束。
您希望从中观察到什么?您没有在NSPrint:
创建的Interface实例连接到任何东西或做任何事情 - 您只需创建它并让它浮动自由。要实际访问[Interface new]
创建的Interface实例,请使用以下内容:
+(Interface*)NSPrint:(NSString*)aString
{
Interface* newInterface = [Interface new];
[[[[newInterface textView] textStorage] mutableString] appendFormat:@"%@\n",aString];
return newInterface;
}
关于IBOutlet的主题:IBOutlet
没有任何意义,除了提醒XCode的接口构建器它应该允许您在控制器对象的变量(标记为IBOutlet)和在接口构建器中创建的另一个对象之间创建连接。然后,在加载视图时,使用连接对象作为参数调用控制器对象的变量的setter方法。最终得到一个控制器类的实例,其实例变量设置为在界面生成器中创建的对象。
有关详细信息,请查看Apple网站上的Objective-C手册:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html或有关界面构建器的信息:http://developer.apple.com/library/mac/#recipes/xcode_help-interface_builder/_index.html#//apple_ref/doc/uid/TP40009971
如果您需要一个类变量(即一个连接到类的变量而不是该类的特定实例),则会出现问题。请查看此问题以获取更多相关信息:Objective C Static Class Level variables