gpt4 book ai didi

objective-c - 默认 Cocoa 应用程序 ViewController.m 问题?

转载 作者:行者123 更新时间:2023-12-03 17:49:44 24 4
gpt4 key购买 nike

新手问题如下...

我正在学习基于 Objective C 的 OS X Cocoa 应用程序开发。我拥有的大多数书籍和视频都是针对 iOS 的,因此我将一些简单的 iOS 代码示例转换为 OS X。

当我创建一个新的 OS X“Cocoa Application”项目并选中“use Storyboards”框时,我新创建的项目中的默认 ViewController.m 没有 @interface 部分。这是预期的吗?

对我最近的问题的回复Cocoa ViewController.m vs. Cocoa Touch ViewController.m表示另一个用户的默认 ViewController.m 确实有一个 @interface 部分。

目前,我正在手动输入 IBOutlet 的 @interface 部分。其他人也是这么做的吗?或者我有一些配置问题?

我在 Yosemite 上使用 Xcode 6.3.2。

这是我的默认 ViewController.m

//
// ViewController.m
// testME
//
// Created by ME on 6/19/15.
// Copyright (c) 2015 ME. All rights reserved.
//

#import "ViewController.h"

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

// Do any additional setup after loading the view.
}

- (void)setRepresentedObject:(id)representedObject {
[super setRepresentedObject:representedObject];

// Update the view, if already loaded.
}

@end

最佳答案

通常,类的接口(interface)(在您的例子中为 ViewController)位于头文件 (.h) 中。

然而,一些开发人员使用将类扩展放在实现文件顶部的约定作为“伪造”私有(private)方法的一种方式(Objective C 没有这种方法。)

所以你可以在 .m 文件中看到这一点:

//The parenthesis here indicate a class extension.
@interface ViewController ()

//Only the ViewController class sees this method.
-(void) method;

@end

@implementation ViewController

-(void) method{
//Do stuff here
}

@end

这并非特定于 iOS 或 MacOS,而是特定于 Objective C。您可以查看更多关于 Objective C 类扩展 here

默认的 Xcode 项目不会为创建的 ViewController 类添加类扩展。但是,如果您创建一个新的 NSViewController 子类(通过转到 File->New->File->Cocoa Class,然后创建一个 NSViewController 子类的类,您会注意到新的 NSViewController 子类将在实现文件的顶部。然而,这不是必需的,也不是必需的,只是用作定义 Objective C 允许的最接近私有(private)接口(interface)的一种方式。

您还可以查看this回答有关实现伪私有(private)方法的更多详细信息。

关于objective-c - 默认 Cocoa 应用程序 ViewController.m 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30944829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com