gpt4 book ai didi

objective-c - Cocoa ViewController.m 与 Cocoa Touch ViewController.m

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

新手问题如下...

我正在学习基于 Objective C 的 Cocoa (OS X) 应用程序开发。我拥有的大多数书籍和视频都是基于 iOS 的,因此我了解这两个平台有何不同。

我已将一个简单的 iOS 应用程序转换为 OS X。转换后的 OS X 应用程序可以正常工作,但我有一个问题:为什么 OS X ViewController.m 文件没有 @interface 部分?

我使用 Interface Builder 创建了 iOS 应用程序,在助理编辑器中将 UI 元素从 Main.Storyboard 拖动到 ViewController.m。我将 UILabel 单元拖到 ViewController.m 的 @interface 部分,创建了一个实例变量 @property。在 iOS 中,ViewController.h public @interface 部分保持为空。

在 OS X 应用程序中,我将 NSTextField 单元拖动到 ViewController.h 文件的 @interface 部分,以创建类似的实例变量。

OS X ViewController.h @interface 部分是 IBOutlet 的正确位置吗?这不会将这些实例变量暴露给其他类吗?在 iOS 情况下,由于实例变量没有添加到 ViewController.h 文件中,我认为它们是隐藏的,对吗?我可以将 OS X 实例变量设置为私有(private)吗?

正如我提到的,OS X 代码可以工作,我只是想了解平台之间的差异,并确保我朝着正确的方向前进。

最佳答案

在我回答之前,我想检查一下我是否也遇到了同样的情况 - 但是当我在新的 iOS 或 OS X 应用程序中创建自定义 NSViewController 时,两者都会生成 @interface 在实现文件(.m 文件)

enter image description here

所以我不确定你为什么会看到这个。

但是,为了回答您的问题,(正如您所说)在头文件 (.h) 的 @interface 中声明的属性是公共(public)的。而在实现中的@interface中声明的属性是私有(private)的。这是因为您的实现内部的 @interface 称为“扩展”。这基本上只是一个匿名的“类别”。

除非外部对象需要引用您的网点,否则我会继续将它们放置在您的实现文件中。如果由于某种原因没有为您生成一个,则手动键入您自己的类扩展来声明属性并没有什么问题

关于objective-c - Cocoa ViewController.m 与 Cocoa Touch ViewController.m,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30899127/

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