objective-c – 没有Interface Builder的Cocoa,初始化app控制器的实例?

概述我不打算在没有IB的情况下编写应用程序,我只是在尝试学习有关编程的更多信息. 如何在启动时获取AppController类的单个实例? (它通常从笔尖加载.)你可以清理初始化和-init的使用吗?如果我理解,在启动时调用所有类的初始化.我如何使用它来创建我的AppController的实例,其中包含构成我的界面的实例变量? 希望有意义,并感谢任何帮助. initalize在第一次或其中一个子类第一 我不打算在没有IB的情况下编写应用程序,我只是在尝试学习有关编程的更多信息.

如何在启动时获取AppController类的单个实例? (它通常从笔尖加载.)你可以清理初始化和-init的使用吗?如果我理解,在启动时调用所有类的初始化.我如何使用它来创建我的AppController的实例,其中包含构成我的界面的实例变量?

希望有意义,并感谢任何帮助.

@H_404_14@解决方法 initalize在第一次或其中一个子类第一次收到消息时被发送到类.所以,当你这样做时:

instance = [[[YourClass alloc] init] autorelease];

该alloc消息触发初始化.

如果你对子类做同样的事情:

instance = [[[SubclassOfYourClass alloc] init] autorelease];

该alloc消息将触发[YourClass initialize],方法与另一个消息相同(在触发[SubclassOfYourClass initialize]之前.)但只有其中一个会这样做 – 每个类的初始化永远不会被多次调用.(除非你调用它)你自己[super initialize]或[SomeClass initialize] – 所以不要这样做,因为这个方法不会期待它.)

另一方面,初始化一个新实例.在表达式[[YourClass alloc] init]中,您个人将消息直接发送到实例.您也可以通过另一个初始值设定项([[YourClass alloc] initWithSomethingElse:bar])或便利工厂([YourClass实例])间接调用它.

与initialize不同,您应始终将init(或其他初始化程序,如果适用)发送到您的超类.大多数init方法看起来大致如下:

- (ID) init {    if ((self = [super init])) {        framistan = [[Framistan alloc] init];    }    return self;}

细节不同(这个方法或者超类或两者都可能有参数,有些人更喜欢self = [super init]在自己的行上,而Wil Shipley doesn’t assign to self at all),但基本思路是一样的:调用[super init [WithSomething:…] ],确保它没有返回nil,如果没有则设置实例,并返回超类返回的内容.

这意味着你可以从init返回nil,事实上你可以.如果这样做,你应该[自我释放],这样你就不会泄漏失败的对象. (为了检测无效的参数值,另一种选择是NSParameterassert,如果断言失败则抛出异常.每个参数的相对优点都超出了这个问题的范围.)

How can I use this to create an instance of my AppController with instance variables that make up my interface?

最好的方法是在main中完成所有 *** 作:

int main(int argc,char **argv) {    NSautoreleasePool *pool = [[NSautoreleasePool alloc] init];    AppController *controller = [[[AppController alloc] init] autorelease];    [[NSApplication sharedApplication] setDelegate:controller]; //Assuming you want it as your app delegate,which is likely    int status = NSApplicationMain(argc,argv);    [pool drain];    return status;}

您将在AppController中的应用程序委托方法中进行任何其他设置.

你已经知道了这一点,但对于其他读过这篇文章的人来说:笔尖是你的朋友. Interface Builder是您的朋友.不要与框架作斗争,并以图形方式构建您的界面,您的应用程序将更好.

总结

以上是内存溢出为你收集整理的objective-c – 没有Interface Builder的Cocoa,初始化app控制器的实例?全部内容,希望文章能够帮你解决objective-c – 没有Interface Builder的Cocoa,初始化app控制器的实例?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1006098.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存