相关疑难解决方法(0)

在iOS中需要@ property/@ synthesize的解释

不是一个完整的菜鸟我对iOS编程和Ojbective-C都很陌生.我主要来自C(DSP,微控制器),Delphi XE2/Pascal,Visual Basic和Java(桌面和Android应用程序)的背景.

我主要从Apress的"Beginning iOS 5 Development"一书中学习了Cocoa.

最近我观看了WWDC 2012的视频并浏览了他们的一些示例代码,我必须说我对编写应用程序的正确方法感到困惑,更具体地说是@ property/@ synthesize字.

在本书中,大多数(并非全部)示例代码用于定义属性,例如

ViewController.h
@property (strong, nonatomic) NSMutableArray *list;

ViewController.m
@synthesize list;
Run Code Online (Sandbox Code Playgroud)

然后所有代码访问合成列表

self.list
Run Code Online (Sandbox Code Playgroud)

甚至简单地说

list
Run Code Online (Sandbox Code Playgroud)

现在在我阅读的每个WWDC代码示例中,我看到程序员定义了一个属性,但是在.m文件中他们做了类似的事情

@synthesize list = _list;
Run Code Online (Sandbox Code Playgroud)

并且有时访问

self.list
Run Code Online (Sandbox Code Playgroud)

要么

_list
Run Code Online (Sandbox Code Playgroud)

我很迷惑.什么是正确的做法?由于Apple程序员都使用下划线,我认为我应该这样做,但为什么这本书没有呢?list和_list之间有区别吗?更重要的是,因为我在同一个对象中为什么有时使用self.list,有时候使用list/_list.

有时他们不使用@synthesize,我认为是时候他们想重新编写自己的访问器和mutators(到目前为止我从来都不是这样).

我已经在网上阅读了这些内容,但没有什么能够让我的思路正确,所以我依靠StackOverflow来实现这一点.

最后但并非最不重要的是,我更喜欢并根据当前的iOS 6最佳实践/编程技术进行回答.没用,告诉我如何在旧的iOS中正确地做到这一点.

properties objective-c ios

31
推荐指数
2
解决办法
3万
查看次数

在ios应用程序中使用@synthesize

我在iOSU开发的iTunesU课程中观看精彩的Paul Haggerty(因为谁不需要刷新基础知识?)他说了一些我不知道的事情:

"我们永远不会访问下划线(_符号)变量"

然后他继续讨论了如何使用@property声明变量,@synthesize variable = _variable是由编译器在幕后生成的代码,以及setter和getter.基本上,代码永远不会出现在您的应用程序中.

在我迄今为止编写的所有iOS应用程序中,我总是@property在我的头文件中声明我的变量.@synthesize VARIABLE_NAME = _VARIABLE_NAME;自从观看讲座以来,我现在很困惑我是否应该@synthesize在我的代码中使用它.

我应该只使用财产声明吗?如果我在代码中使用合成声明,它有什么区别(如果有的话)?

既然Haggerty先生不使用它,那我为什么呢?(考虑到他是一个iOS半神).我非常觉得做我一直在做的事情是不好的形式.

有人关心澄清这个问题吗?

objective-c ios

2
推荐指数
1
解决办法
3028
查看次数

标签 统计

ios ×2

objective-c ×2

properties ×1