Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 为自定义类中的全局变量设置默认值?_Objective C_Cocoa_Xcode_Macos - Fatal编程技术网

Objective c 为自定义类中的全局变量设置默认值?

Objective c 为自定义类中的全局变量设置默认值?,objective-c,cocoa,xcode,macos,Objective C,Cocoa,Xcode,Macos,我有一个自定义类,它有许多用于自定义的访问器方法。我的问题是,如果一个程序员使用这个类,而不为所有这些方法赋值,因为他不知道或者不想麻烦,我怎么能让这个类采用默认视图呢?我不能使用awakeFromNib,因为这会覆盖AppController awakeFromNib中有目的的定制 有什么简单的方法吗 编辑: NSView中的类和定制方法只是修改一个实例变量,然后告诉视图重新绘制(背景色等)。当我没有明确地告诉某个地方的对象为所有这些自定义设置赋值时,它会将它们设置为零。我需要将其更改为假定可

我有一个自定义类,它有许多用于自定义的访问器方法。我的问题是,如果一个程序员使用这个类,而不为所有这些方法赋值,因为他不知道或者不想麻烦,我怎么能让这个类采用默认视图呢?我不能使用awakeFromNib,因为这会覆盖AppController awakeFromNib中有目的的定制

有什么简单的方法吗

编辑:


NSView中的类和定制方法只是修改一个实例变量,然后告诉视图重新绘制(背景色等)。当我没有明确地告诉某个地方的对象为所有这些自定义设置赋值时,它会将它们设置为零。我需要将其更改为假定可用默认值的位置

我不知道你想做什么。如果要为类成员设置默认值,只需在
init
方法中为它们赋值:

(很抱歉,我是个无赖;我似乎还不能对别人的答案发表评论。)

是的,您通常在自定义NSView子类中重写initWithFrame。确保同时调用超类的initWithFrame:方法:

self = [super initWithFrame:frameRect];

关于加载大量堆栈帧的错误消息使我认为您可能无意中创建了一个无限递归循环。但是,在没有看到代码的情况下,我无法确定。

您能提供更详细的信息吗?属性如何更改与该控制器关联的视图?此外,该类应该是子类还是按原样使用?它是一个NSView,所以我会重写initWithFrame吗?我尝试了这一点,实现了一个类似:-(id)initWithFrame:(NSRect)frameRect{}的init,然后基本上完成了上面的工作,为实例变量赋值。该应用程序在启动时崩溃,并说“加载大量堆栈帧,x%”。该视图放置在NIB文件中,仅供参考。
self = [super initWithFrame:frameRect];