我实际上是xcode的新手。我可以弄清楚自己的一些事情,但对某些事情做了什么以及为什么把它放在那里有疑问。我试过阅读很多电子书,看过教程,但是他们从不进入基础,总是只说“添加这个,点击这里等”
请有人给我几个问题的答案。 好吧,我知道一个ios应用程序主要由Views构成,视图由控制器控制。每个控制器都有一个头文件(.h)和一个模块?类?档案(.m)。 .h文件包含.m文件中使用的变量和函数的声明。 整个应用程序由称为“委托”的主“控制器”控制。 .h文件中的定义可以是例如动作IBAction或IBLabel等。
为我提出的问题是例如以下几行:
@class FlipsideViewController;
@protocol FlipsideViewControllerDelegate
- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller;
@end
@interface FlipsideViewController : UIViewController
@property (nonatomic, assign) id <FlipsideViewControllerDelegate> delegate;
- (IBAction)done:(id)sender;
为什么有时在另一个视图控制器中加载了委托类
@class MainViewController;
以下是什么,这意味着什么是@interface声明?
@interface flipAppDelegate : NSObject <UIApplicationDelegate>
是什么
nonatomic, retain
很抱歉提出了非常愚蠢的问题,但每个教程都会跳过这些问题。 我可以关注youtube视频或手册,但它并没有教会我很多...
答案 0 :(得分:3)
让我试着一次一个地回答你的问题。
什么是@interface声明?
接口声明了一个类。通过声明一个类,我的意思是它指定它包含的实例变量和私有/公共方法。同样,头文件只包含方法的声明,方法的实现/主体位于模块类中。所以,这里 -
@interface FlipsideViewController:UIViewController
类FlipsideViewController
派生自/ subclasses / extends UIViewController
。即UIViewController
的类型,但增加了自己的特征。
同样
@interface flipAppDelegate : NSObject <UIApplicationDelegate>
子类NSObject并实现UIApplicationDelegate
协议。协议本质上是一组类承诺实现的方法(尽管可以有可选方法)。
为什么有时在另一个视图控制器中加载了委托类
委托模式允许类将其工作委托给另一个实现委托协议的类。所以,在这里,FlipsideViewController
保留委托对象的实例,以便可以调用它的flipsideViewControllerDidFinish:
。
什么是非原子的,保留
这意味着当您为实例变量设置值时,值的refcount将递增并设置为您的变量。此外,它不会作为原子操作发生。您只需要在多线程环境中使用atomic。
@synthesize只是为变量生成getter和setter的快捷方式。
答案 1 :(得分:2)
你真的需要阅读Apple的Objective-C Programming Language。它非常简短,并且介绍了体系结构,概念和语法的基础知识。
简要说明一些细节:
@class
指令用于声明类的名称而不导入其头文件。它通常用于声明协议的.h文件中,因为协议没有实现,它不需要导入其他类的接口(它们的.h文件)。@interface
来声明一个类,这意味着描述它将拥有的方法和属性,它将实现的协议以及它将从中继承的超类。在您的示例中,该类将被称为flipAppDelegate
,它继承NSObject
类的所有方法和属性,并实现UIApplicationDelegate
协议。 @synthesize
在类实现文件(.m)中用于“合成”---即自动创建代码 - 您在接口(.h)文件中声明的所有属性。由于属性通常只需要基本访问器(只是返回当前值的“getter”,以及只设置当前值的“setter”),使用@synthesize
是让编译器创建存储变量的快捷方式你自己的值,getter方法和setter方法。答案 2 :(得分:0)
我强烈建议您从学习Objective-C开始。至少先用底漆:
Apple可为想要在开发人员门户网站上启动的开发人员提供大量教程和视频。